GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa memaksa hanya jalur relatif dalam menemukan keluaran?

Anda dapat menggunakan %P format dalam -printf direktif:

find ${rootDir} -name '*.doc' -printf "%P\n"

akan ditampilkan dalam contoh Anda:

subdir/test.doc
second.doc

Anda kemudian dapat menggunakan find ini daftar dalam for ekspresi, untuk menjalankan perintah exec kami, seperti pada:

for f in $( find ${rootDir} -name '*.doc' -printf "%P\n" );
do
    tar rvf docs.tar ${f}
done

Jika Anda menjalankan find dari direktori root yang diinginkan dan jangan tentukan titik awal mutlak di find , itu akan menampilkan jalur relatif ke tar pemanggilan perintah yang dibuatnya. Seperti itu:

cd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;

Jika Anda tidak ingin mengubah direktori kerja saat ini secara permanen dan menggunakan bash atau serupa dengan shell Anda yang bisa Anda lakukan

pushd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;
popd

sebagai gantinya.

Perhatikan bahwa pushd/popd tidak ada di semua shell, jadi periksa halaman manual yang sesuai. Mereka hadir dalam bash tetapi tidak dalam implementasi sh dasar sementara secara eksplisit menggunakan /bin/bash Anda dapat mengandalkan mereka, Anda tidak dapat melakukannya jika skrip meminta /bin/sh sebagai gantinya (karena ini mungkin memetakan ke shell yang lebih kecil yang tidak memiliki peningkatan bash)


Linux
  1. Bagaimana Membuat Direktori Hanya Keluaran Pohon?

  2. Bagaimana saya bisa menghitung checksum md5 dari sebuah direktori?

  3. Bagaimana cara mengecualikan jalur absolut untuk tar?

  1. Perintah Linux:Bagaimana cara 'menemukan' hanya file teks?

  2. Bagaimana cara memindahkan tautan simbolik relatif?

  3. Bagaimana saya bisa menemukan versi shell saya menggunakan perintah Linux?

  1. Bagaimana saya bisa mendaftar hanya file yang tidak kosong menggunakan ls?

  2. Bagaimana saya bisa menginstal RPM tanpa menjadi root?

  3. Bagaimana saya bisa melihat keluaran dmesg saat berubah?