Цикл по подпапкам не работает Unix - PullRequest
0 голосов
/ 22 марта 2012

У меня есть папка с несколькими подпапками, и каждая подпапка содержит 10-15 файлов. Я хочу выполнить определенную операцию только над текстовыми файлами в этих папках. Папки содержат и другие типы файлов. Сейчас я просто пытаюсь написать простой цикл for для доступа к каждому файлу.

for /r in *.txt; do "need to perform this on every file"; done

Это дает мне ошибку -bash: ``/R': not a valid identifier

Спасибо за помощь.

P.S Я использую cygwin на Win 7.

Ответы [ 3 ]

4 голосов
/ 22 марта 2012

Ваш / r - проблема, это не верный идентификатор (как сказал bash, вам нужно отбросить /).Кроме того, это не будет переходить в подкаталоги.Если ваша операция проста, вы можете напрямую использовать опцию exec для find.{} является заполнителем для имени файла.

find . -name "*.txt" -exec ls -l {} \;

В противном случае попробуйте что-то вроде

for r in $( find . -name "*.txt" ) ; do
    echo $r
    #more actions...
done
2 голосов
/ 23 марта 2012

С bash:

shopt -s globstar
for file in **/*.txt; do ...
1 голос
/ 22 марта 2012

Я бы использовал «найти» для вашего случая применения

Что-то вроде

find . -name "*.txt" -exec doSomeThing {} \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...