Найти исполняемые имена файлов без пути

9

У меня есть папка со многими исполняемыми файлами, и я хочу опустить путь в результатах команды find. эта команда показывает файлы, которые я хочу видеть, но также перечисляет путь; Я просто хочу имя файла.

find /opt/g09 -maxdepth 1 -executable

Как я могу получить вывод find, чтобы показать только имена файлов, а не полный путь?

j0h
источник

Ответы:

10

Или используйте:

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

добавление -type fфлага также работает здесь.

Из findруководства:

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

Этот ответ требует только, чтобы у вас был GNU, в findто время как другие требуют, чтобы другие программы манипулировали вашими результатами.

nixpower
источник
Вот что я пытался придумать! Спасибо, кодировщик!
j0h
@ j0h не проблема!
nixpower
6

Используйте basename:

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

От man basename:

Print NAME with any leading directory components removed.

Также вы пытаетесь findвсе, чтобы ограничить поиск только файлами, используйте:

find /opt/g09 -type f -maxdepth 1 -executable -exec basename {} \;
heemayl
источник
3

Наиболее очевидное решение для меня это

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

Поскольку вы запускаете подоболочку, вы остаетесь в том же каталоге. Преимущество этого метода в том, что вам не нужно разбирать. Недостатком является то, что вы запускаете подоболочку (хотя вы этого не почувствуете).

Бернхард
источник
1
Это умная идея.
AB
1

С помощью awk, разделяя путь разделителем /, выведите последний раздел ( $NF):

find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'
Якоб Влейм
источник
Где твоя версия Python, брат? ;)
Сергей Колодяжный
@ Серг, ха-ха, мне пришлось связать пальцы :)
Джейкоб Влейм
1

Используя комбинацию findиperl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'
AB
источник
Отличный способ выучить немного Perl: P
nixpower