Я хочу выполнить команду для всех файлов, присутствующих на всех уровнях в каталоге. Он может иметь любое количество файлов и подкаталогов. Даже эти вспомогательные каталоги могут содержать любое количество файлов и подкаталогов. Я хочу сделать это с помощью сценария оболочки. Поскольку я новичок в этой области, любой может предложить мне выход.Пройти через каталог с любым уровнем глубины
ответ
Вы можете использовать рекурсивную команду, которая использует шаблонные символы (*), как так:
for dir in ~/dev/myproject/*; do (cd "$dir" && git status); done
Если вы хотите применить команды на отдельные файлы, вы должны использовать команду поиска и выполнение команд на нем, как так :
find yourdirectory -type f -exec echo "File found: '{}'" \;
Что это делает:
- находит все элементы в каталоге yourdirectory
- , которые имеют типа п - так является файлом
- запускает Exec на каждый файл
Вы можете использовать команду "найти" с "xargs" после «| «(труба).
Пример: Предположим, что я хочу, чтобы удалить все файлы, которые имеют «.txt» на директории „Документы“:
find Documents -iname *.txt |xargs rm -f
Помогает?
Использование найти:
найти -типа ф -exec КОМАНДУ {} \;
-f применяет команду только к файлам, а не к каталогам. По умолчанию команда рекурсивна.
Обратите внимание, что 'find -exec' очень медленный. 'найти | xargs' намного быстрее на больших наборах файлов. И он также может быть параллелен. –
- 1. Пройти через каталог, удалить
- 2. Рекурсивно пройти через многомерный массив с различными уровнями глубины
- 3. Как пройти через каталог в perl
- 4. Как пройти каталог через локальную сеть с помощью PHP?
- 5. значков узлов Изменения JTree в соответствии с уровнем глубины
- 6. Php пройти через коммутатор, и пройти через
- 7. Реагировать: пройти проверку через?
- 8. Как пройти каталог в C
- 9. HttpRequest: пройти через AuthLogin
- 10. Доступ пройти через запрос
- 11. Как пройти через Btree?
- 12. Попытка пройти через запрос
- 13. NSXMLElement пройти через
- 14. Рекурсивно пройти через массив
- 15. Как пройти через это?
- 16. PHP пройти через прокси
- 17. пройти через все метки
- 18. Как пройти через указатели?
- 19. Как пройти через DataGrid?
- 20. Как пройти через клавиши
- 21. Пройти через свойства класса?
- 22. Как пройти через $ _FILES?
- 23. Пройти через каталог изображений и повернуть их все x градусов и сохранить в каталог
- 24. Пакетный файл через каталог?
- 25. bash - looping через каталог
- 26. Rails генерирует новый каталог с несколькими уровнями глубины
- 27. Как пройти буфер глубины от OGRE до CUDA?
- 28. Как лучше всего пройти Дети детей детей до неизвестной глубины?
- 29. Пройти через XML с другого сайта
- 30. Как пройти через форму с записью
Что делать, если я хочу передать имя файла в команде, которую я хочу запустить во всех файлах –
Я считаю, что уже дал вам ответ! xargs будет использовать любую команду, которую вы хотите. find с параметром «-iname» позволит вам передать имя файла. Теперь вы должны добавить скрипт для захвата аргументов. Вы можете сделать с bash, получая аргумент с переменными $ 1, $ 2, ... $ n. Пример: 'startsearch = $ 1' и' filename = $ 2' и они используются в команде выше, используя $ startsearch и $ filename. Вы можете улучшить это самостоятельно! –
Большое спасибо –