У меня есть папка со многими исполняемыми файлами, и я хочу опустить путь в результатах команды находки. эта команда показывает файлы, которые я хочу видеть, но она также перечисляет путь; я просто хочу имя файла.
find /opt/g09 -maxdepth 1 -executable
как я могу заставить вывод находки показывать только имена файлов а не полный путь?
Или использование:
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
, тогда как другие требуют, чтобы другие программы управляли Вашими результатами.
Используйте 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 {} \;
Самое очевидное решение меня
(cd /opt/g09; find -maxdepth 1 -executable)
, поскольку Вы запускаете подоболочку, которой Вы остаетесь в том же каталоге. Преимущество этого метода состоит в том, что Вам не нужен парсинг. Недостаток - то, что Вы запускаете подоболочку (Вы не собираетесь чувствовать это хотя).
С awk
, разделяя путь разделителем /
, печатают последний раздел ($NF
):
find /opt/g09 -maxdepth 1 -executable | awk -F/ '{print $NF}'
Используя комбинацию find
и perl
find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'