find . -type f -print
печатаетКак разбить ведущий «./» в unix «find»?
./file1
./file2
./file3
Любой способ сделать это распечатать
file1
file2
file3
?
find . -type f -print
печатаетКак разбить ведущий «./» в unix «find»?
./file1
./file2
./file3
Любой способ сделать это распечатать
file1
file2
file3
?
Если они только в текущем каталоге
find * -type f -print
Это то, что вы хотите?
Использование СЭД
find . | sed "s|^\./||"
Это мое предпочтительное решение; он совместим с POSIX (работает практически везде, даже встраиваемые системы), очень короткий и вряд ли приведет к неожиданному поведению. Это должен быть принятый ответ. –
Как это будет сочетаться с 'find -exec'? – PaulrBear
'find -exec sh -c 'echo {} | sed' s |^\ ./ || '" \; ' или ' find -exec sh -c' sed |^\ ./ | |» <<< '{}' "\;' – xenithorb
может быть короче
find * -type f
Лучше с '2>/dev/null' игнорировать ошибку, сообщаемую при запуске команды в пустом каталоге. – neevek
Найти только правильные файлы в текущем каталоге, и печатать их без "./" префикс:
find -type f -printf '%P\n'
С man find, описание -printf format:
% P Имя файла с именем аргумента командной строки, в котором оно было удалено.
+1 Хорошее решение, если ваша версия 'find' поддерживает' -printf' (не все). –
Как сказал Тодд, но точнее: это не POSIX 7. –
Поддерживается или нет, это определенно безопаснее, чем принятый ответ. –
Я знал, что это можно сделать с помощью sed, но это гораздо лучшее решение. Благодаря! – breadjesus
приятно, никогда не думал об этом –
Это пропустит файлы с именами, начинающимися с периода. – Sean