我是Bash的新手,我试图在某组文件夹中查找文件。我想为每个/ check /文件夹中的图像文件创建一个txt报告。
以下是我一直在使用的内容:
# Find images
for f in */check/ ; do
find ./ -iname "*jpg*" -o -iname "*png*" > find_images.txt
echo "finished $f"
done
我无法弄清楚如何只查看名为" check"的子文件夹,我还想传递变量,以便获得以父文件夹命名的单独文本文件。有什么建议吗?
答案 0 :(得分:1)
您已经关闭了,但是您没有使用包含该文件夹名称的$f
:
# Find images
for f in */check/ ; do
# Removing front-slashes from $f to use in log name
# http://mywiki.wooledge.org/BashGuide/Parameters#Parameter_Expansion
log_f="${f//\//_}"
# Only search inside $f, saving results to find_images_[foldername].txt
find "$f" -iname "*jpg*" -o -iname "*png*" > "find_images_${log_f}.txt"
echo "finished $f"
done
答案 1 :(得分:0)
使用 grep命令并使用查找命令管道
find . | grep check
答案 2 :(得分:0)
find
命令支持搜索目录(文件夹),例如
find . -name "check" -type d
您可以使用这些结果然后查找所需的文件。变量$ f将是文件夹的名称,因此请在inner find命令中使用它。然后,如果每次循环都需要单独的输出文件,请在文件名中使用变量。 $ f变量将在内容中包含斜杠,因此您可能不希望在输出文件的名称中使用它。在我的示例中,我使用计数器来确保每个输出文件都有唯一的名称。
count=1
for f in `find . -name "check" -type d` ; do
find $f -iname "*jpg*" -o -iname "*png*" > find_images_$count_.txt
count=$((count+1))
done