编写shell脚本来扫描文件夹列表

时间:2010-02-25 05:03:48

标签: shell unix

我有一个文件folders.txt

one
two
three
four
...

具有文件夹名称列表。 [onetwothreefour是文件夹的名称。

这些文件夹中的每一个都有许多不同类型的文件(不同的扩展名)。我想要一个特定扩展名的所有文件夹中的所有文件的列表,例如.txt

我的shell脚本应该如何?

3 个答案:

答案 0 :(得分:2)

单程

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 :(得分:2)

只需在命令行上执行:

xargs ls -l < folders.txt | grep '.txt$'

答案 2 :(得分:1)

鉴于帖子只是要求一个文件列表,这很简单:

tmp=$IFS
IFS=$(echo -en "\n\b") 
for i in `cat folders.txt` ; do
    ls -l "$i/*.txt"
done
IFS=$tmp