2010-04-07 2 views

ответ

37

Если они только в текущем каталоге

find * -type f -print

Это то, что вы хотите?

+0

Я знал, что это можно сделать с помощью sed, но это гораздо лучшее решение. Благодаря! – breadjesus

+0

приятно, никогда не думал об этом –

+12

Это пропустит файлы с именами, начинающимися с периода. – Sean

25

Использование СЭД

find . | sed "s|^\./||" 
+0

Это мое предпочтительное решение; он совместим с POSIX (работает практически везде, даже встраиваемые системы), очень короткий и вряд ли приведет к неожиданному поведению. Это должен быть принятый ответ. –

+5

Как это будет сочетаться с 'find -exec'? – PaulrBear

+0

'find -exec sh -c 'echo {} | sed' s |^\ ./ || '" \; ' или ' find -exec sh -c' sed |^\ ./ | |» <<< '{}' "\;' – xenithorb

10

может быть короче

find * -type f 
+0

Лучше с '2>/dev/null' игнорировать ошибку, сообщаемую при запуске команды в пустом каталоге. – neevek

136

Найти только правильные файлы в текущем каталоге, и печатать их без "./" префикс:

find -type f -printf '%P\n' 

С man find, описание -printf format:

% P Имя файла с именем аргумента командной строки, в котором оно было удалено.

+9

+1 Хорошее решение, если ваша версия 'find' поддерживает' -printf' (не все). –

+1

Как сказал Тодд, но точнее: это не POSIX 7. –

+6

Поддерживается или нет, это определенно безопаснее, чем принятый ответ. –