GNU/Linux >> Belajar Linux >  >> Linux

Cara mendapatkan hanya nama dari perintah find tanpa jalur

Gunakan find trunk/messages/ -name "*.po" -exec basename {} .po \;

Contoh dan penjelasan:

Buat beberapa file percobaan:

$ touch test1.po  
$ touch test2.po  
$ find . -name "*.po" -print
./test1.po  
./test2.po

Oke, file ditemukan, termasuk jalur.

Untuk setiap hasil, jalankan basename , dan hapus bagian .po dari nama

$ find . -name "*.po" -exec basename \{} .po \;  
test1  
test2

Anda dapat menggunakan -execdir parameter yang akan mencetak file tanpa path, misalnya:

find . -name "*.po" -execdir echo {} ';'

File tanpa ekstensi:

find . -name "*.txt" -execdir basename {} .po ';'

Lihat:Mengapa perintah find -execdir GNU berperilaku berbeda dari find BSD?


Berdasarkan perintah yang saya temukan di sini:http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html

Anda dapat melakukan ini menggunakan sed (yang dieksekusi lebih cepat untuk saya, daripada basename pendekatan):

find trunk/messages/ -name "*.po" | sed 's!.*/!!' | sed 's!.po!!'

Linux
  1. Bagaimana Mengintegrasikan Perintah Mv Setelah Menemukan Perintah?

  2. Bagaimana Cara Mendapatkan Hanya File yang Dibuat Setelah Berkencan Dengan Ls?

  3. Linux – Bagaimana Cara Mengetahui Keluarga Arsitektur Intel Dari Baris Perintah?

  1. Temukan Hanya Tujuan Symlink?

  2. Cara menjalankan perintah "find" hanya pada direktori saat ini dan bukan pada sub-direktori

  3. Cara mengecualikan direktori di find . memerintah

  1. Bagaimana cara mendapatkan nama file dengan Linux 'find'?

  2. Bagaimana cara mendapatkan URL file Dropbox dari baris perintah?

  3. Bagaimana cara mengetahui versi Bluez dari baris perintah?