Написание сценария оболочки для сканирования списка папок - PullRequest
1 голос
/ 25 февраля 2010

У меня есть файл folders.txt

one
two
three
four
...

со списком имен папок. [one, two, three и four являются именами папок].

В каждой из этих папок есть несколько файлов разных типов (разных расширений). Я хочу получить список всех файлов во всех папках с определенным расширением, скажем .txt.

Как должен выглядеть мой сценарий оболочки?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2010

Просто сделайте это в командной строке:

xargs ls -l < folders.txt | grep '.txt$'
2 голосов
/ 25 февраля 2010

в одну сторону

while read -r folders
do
  # add -maxdepth 1 if recursive traversal is not required
  find "$folders" -type f -iname "*.txt" | while read -r FILE
  do
      echo "do something with $FILE"
  done
done <"file"

или

folders=$(<file)
find $folders -type f -iname "*.txt" | while read -r FILE
do
    echo "do something with $FILE"
done

Bash 4.0 (если требуется рекурсивный поиск)

shopt -s globstar
folders=$(<file)
for d in $folders
do
  for file in $d/**/*.txt
  do
    echo "do something with $file"
  done
done
1 голос
/ 25 февраля 2010

Учитывая, что пост просто просит список файлов, это довольно просто:

tmp=$IFS
IFS=$(echo -en "\n\b") 
for i in `cat folders.txt` ; do
    ls -l "$i/*.txt"
done
IFS=$tmp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...