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

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

find /opt/g09 -maxdepth 1 -executable

как я могу заставить вывод находки показывать только имена файлов а не полный путь?

9
задан 1 July 2015 в 09:10

5 ответов

Или использование:

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

10
ответ дан 23 November 2019 в 04:49

Используйте 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 {} \;
6
ответ дан 23 November 2019 в 04:49

Самое очевидное решение меня

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

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

3
ответ дан 23 November 2019 в 04:49

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

find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'
1
ответ дан 23 November 2019 в 04:49

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

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'
1
ответ дан 23 November 2019 в 04:49

Другие вопросы по тегам:

Похожие вопросы: