Я пытаюсь получить только имена из результатов поиска, используя find, но он также всегда включает в себя каталоги. Как я могу распечатать только имена (или назначить переменную), используя find
find trunk/messages/ -name "*.po" -printf '%f\n'
аналогичная команда для присвоения этой переменной, например, «ресурс», чтобы использовать ее позже.
РЕДАКТИРОВАТЬ: И, если возможно, только имя, исключая расширение.
find . -name '*.po' -exec bash -c 'echo ${0%.po}' {} \;
find . -name '*.po' -type f -exec sh -c 'echo $(basename $(dirname $0))/$(basename $0)' {} \;
find
?Вы можете использовать
-execdir
параметр, который будет печатать файл без пути, например:Файлы без расширений:
Примечание: поскольку это не POSIX, BSD
find
будет печатать чистые имена файлов, однако использование GNUfind
будет печатать дополнительно./
.См .: Почему команда GNU find -execdir ведет себя иначе, чем команда BSD find?
источник
Основываясь на команде, которую я нашел здесь: http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html
Вы можете сделать это, используя
sed
(что выполняется для меня быстрее, чемbasename
подход):источник