Как убрать ведущий "./" в unix "find"?
find . -type f -print
распечатывает
./file1
./file2
./file3
Любой способ напечатать
file1
file2
file3
?
8 ответов
Решение
Если они только в текущем каталоге
find * -type f -print
Это то, что вы хотите?
Найти только обычные файлы в текущем каталоге и распечатать их без./
" префикс:
find -type f -printf '%P\n'
От человека найти, описание -printf
формат:
% P Имя файла с именем аргумента командной строки, под которым он был найден, удален.
Другой способ снятия ./
с помощью cut
подобно:
find -type f | cut -c3-
Дальнейшее объяснение можно найти здесь
Поскольку -printf
опция недоступна в OSX find
вот одна команда, которая работает на OSX find, на всякий случай, если кто-то не хочет устанавливать gnu find
с помощью brew
так далее:
find . -type f -execdir printf '%s\n' {} +
Для файлов в текущем каталоге:
find . -maxdepth 1 -type f | xargs basename -a
-maxdepth 1 -> basically this means don't look in subdirectories, just current dir
-type f -> find only regular files (including hidden ones)
basename -> strip everything in front of actual file name (remove directory part)
-a -> 'basename' tool with '-a' option will accept more than one file (batch mode)