Saya mencoba mendapatkan hanya nama-nama dari hasil pencarian menggunakan find, tetapi selalu menyertakan direktori juga. Bagaimana saya bisa mencetak hanya nama (atau menetapkan ke variabel) menggunakan find
find trunk/messages/ -name "*.po" -printf '%f\n'
perintah serupa untuk menetapkan ini ke variabel misalnya "sumber daya" untuk menggunakannya nanti.
EDIT: Dan jika mungkin hanya nama yang tidak termasuk ekstensi.
find . -name '*.po' -exec bash -c 'echo ${0%.po}' {} \;
find . -name '*.po' -type f -exec sh -c 'echo $(basename $(dirname $0))/$(basename $0)' {} \;
find
?Anda dapat menggunakan
-execdir
parameter yang akan mencetak file tanpa path, misalnya:File tanpa ekstensi:
Catatan: Karena ini bukan POSIX, BSD
find
akan mencetak nama file yang bersih, namun menggunakan GNUfind
akan mencetak ekstra./
.Lihat: Mengapa perintah GNU find -execdir berperilaku berbeda dari yang ditemukan BSD?
sumber
Berdasarkan perintah yang saya temukan di sini: http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html
Anda bisa melakukan ini menggunakan
sed
(yang dieksekusi lebih cepat untuk saya, daripadabasename
pendekatannya):sumber