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


9

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

find /opt/g09 -maxdepth 1 -executable

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

Ответы:


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то время как другие требуют, чтобы другие программы манипулировали вашими результатами.


Вот что я пытался придумать! Спасибо, кодировщик!
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 {} \;

3

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

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

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


1
Это умная идея.
AB


1

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

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'

Отличный способ выучить немного Perl: P
nixpower
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.