我有一个文件folders.txt
one
two
three
four
...
具有文件夹名称列表。 [one
,two
,three
和four
是文件夹的名称。
这些文件夹中的每一个都有许多不同类型的文件(不同的扩展名)。我想要一个特定扩展名的所有文件夹中的所有文件的列表,例如.txt
。
我的shell脚本应该如何?
答案 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