2013-03-18 4 views
0

Я пытаюсь перечислить все файлы в родительском каталоге и его подкаталогах. Тем не менее, я запускаю эту команду из другого места. Итак, сначала мне нужно перейти в каталог (откуда я хочу запустить эту команду).Поиск рекурсивно для файлов в родительском каталоге в Linux

Обратите внимание: я использую команду find вместо ls, потому что также хочу перечислить абсолютный путь для каждого файла перед ним. Это невозможно с помощью команды ls.

вот что я делаю:

cd ../../../;cd level1_dir1;find $(pwd) . -name *.* -printf "%TY-%Tm-%Td\t%p\n" 

Эта команда не показывает никаких выходных данных.

Вот структура каталога:

level1_dir1 

это имеет несколько подкаталогов:

level2_dir1 
level2_dir2 

.... 

level2_dir10 

каждый из этих подкаталогов снова есть подкаталоги и файлы внутри них.

однако, теперь, если я:

cd ../../../;cd level1_dir1/level2_dir1;find $(pwd) . -name *.* -printf "%TY-%Tm-%Td\t%p\n" 

он будет делать рекурсию правильно для всех подкаталогов в level2_dir1 и показать выход, как:

date level1_dir1/level2_dir1/path/to/file/filename 

так, я хотел бы напечатать для все каталоги уровня2, таким образом (с использованием дикого характера):

cd ../../../;cd level1_dir1/*;find $(pwd) . -name *.* -printf "%TY-%Tm-%Td\t%p\n" 

но он печатает из результатов только для первого каталога в level2 (то есть level2_dir1)

Как я могу составить список файлов вниз для всех подкаталогов?

спасибо.

+0

Вы имеете в виду 'find. -name '*' '? Или 'find ../../../ -name '*'' – Bart

+0

Я сначала меняю каталог, чтобы перейти в родительский каталог, откуда я начну поиск всех файлов рекурсивно. –

+0

Вам не нужно «cd» обратно. 'find' может справиться с этим. См. Мой предыдущий комментарий. – Bart

ответ

0

Как насчет этого?

find ../../../level1_dir1 -printf "%TY-%Tm-%Td\t%p\n" 

Если вам нужны все файлы, вы даже не нуждаетесь в имени в команде find. Если вы не хотите видеть каталоги и только файлы, просто добавьте «-type f» перед -printf.

Надеюсь, это поможет ...

Смежные вопросы