Temukan nama file yang dapat dieksekusi tanpa path

9

Saya memiliki folder dengan banyak executable, dan saya ingin menghilangkan path di hasil perintah find. perintah ini memperlihatkan file yang ingin saya lihat, tetapi juga mencantumkan path; Saya hanya ingin nama file.

find /opt/g09 -maxdepth 1 -executable

bagaimana saya bisa mendapatkan hasil find untuk hanya menampilkan nama file, dan bukan path lengkap?

j0h
sumber

Jawaban:

10

Atau gunakan:

find /opt/g09 -maxdepth 1 -executable -printf "%f\n"

menambahkan -type fbendera juga berfungsi di sini.

Dari findmanual:

 %f     File's name with any leading directories removed (only the last element).

Jawaban ini hanya mengharuskan Anda memiliki GNU findsedangkan yang lain memerlukan program lain untuk memanipulasi hasil Anda.

nixpower
sumber
-type f Itulah yang saya coba pikirkan! Terima kasih coding man!
j0h
@ j0h bukan masalah!
nixpower
6

Gunakan basename:

find /opt/g09 -maxdepth 1 -executable -exec basename {} \;

Dari man basename:

Print NAME with any leading directory components removed.

Anda juga mencoba findsegalanya, untuk membatasi pencarian Anda hanya pada file, gunakan:

find /opt/g09 -type f -maxdepth 1 -executable -exec basename {} \;
heemayl
sumber
3

Solusi yang paling jelas bagi saya adalah

(cd /opt/g09; find -maxdepth 1 -executable)

Karena Anda memulai subkulit Anda tetap di direktori yang sama. Keuntungan dari metode ini adalah Anda tidak perlu melakukan parsing. Kerugiannya adalah Anda memulai subkulit (Anda tidak akan merasakannya).

Bernhard
sumber
1
Itu ide yang cerdas.
AB
1

Dengan awk, memisahkan jalan dengan pembatas /, cetak bagian terakhir ( $NF):

find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'
Yakub Vlijm
sumber
Di mana bro versi python Anda? ;)
Sergiy Kolodyazhnyy
@Serg haha, aku harus mengikat jariku :)
Jacob Vlijm
1

Menggunakan kombinasi dari finddanperl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'
AB
sumber
Cara yang bagus untuk mempelajari beberapa Perl: P
nixpower