2016-10-21 2 views
1

Я хочу выполнить команду для всех файлов, присутствующих на всех уровнях в каталоге. Он может иметь любое количество файлов и подкаталогов. Даже эти вспомогательные каталоги могут содержать любое количество файлов и подкаталогов. Я хочу сделать это с помощью сценария оболочки. Поскольку я новичок в этой области, любой может предложить мне выход.Пройти через каталог с любым уровнем глубины

ответ

0

Вы можете использовать рекурсивную команду, которая использует шаблонные символы (*), как так:

for dir in ~/dev/myproject/*; do (cd "$dir" && git status); done 

Если вы хотите применить команды на отдельные файлы, вы должны использовать команду поиска и выполнение команд на нем, как так :

find yourdirectory -type f -exec echo "File found: '{}'" \; 

Что это делает:

  • находит все элементы в каталоге yourdirectory
  • , которые имеют типа п - так является файлом
  • запускает Exec на каждый файл
0

Вы можете использовать команду "найти" с "xargs" после «| «(труба).

Пример: Предположим, что я хочу, чтобы удалить все файлы, которые имеют «.txt» на директории „Документы“:

find Documents -iname *.txt |xargs rm -f 

Помогает?

+0

Что делать, если я хочу передать имя файла в команде, которую я хочу запустить во всех файлах –

+0

Я считаю, что уже дал вам ответ! xargs будет использовать любую команду, которую вы хотите. find с параметром «-iname » позволит вам передать имя файла. Теперь вы должны добавить скрипт для захвата аргументов. Вы можете сделать с bash, получая аргумент с переменными $ 1, $ 2, ... $ n. Пример: 'startsearch = $ 1' и' filename = $ 2' и они используются в команде выше, используя $ startsearch и $ filename. Вы можете улучшить это самостоятельно! –

+0

Большое спасибо –

0

Использование найти:

найти -типа ф -exec КОМАНДУ {} \;

-f применяет команду только к файлам, а не к каталогам. По умолчанию команда рекурсивна.

+0

Обратите внимание, что 'find -exec' очень медленный. 'найти | xargs' намного быстрее на больших наборах файлов. И он также может быть параллелен. –

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