我一直在寻找一种方法来列出需要存在的文件列表中不存在的文件。这些文件可以存在于多个位置。我现在拥有的一切:Bash脚本来列出找不到的文件
#!/bin/bash
fileslist="$1"
while read fn
do
if [ ! -f `find . -type f -name $fn ` ];
then
echo $fn
fi
done < $fileslist
如果文件不存在find命令不会打印任何东西,测试不起作用。删除not并创建if then else条件不能解决问题。
如何打印从文件名列表中找不到的文件名?
新的脚本:
#!/bin/bash
fileslist="$1"
foundfiles="~/tmp/tmp`date +%Y%m%d%H%M%S`.txt"
touch $foundfiles
while read fn
do
`find . -type f -name $fn | sed 's:./.*/::' >> $foundfiles`
done < $fileslist
cat $fileslist $foundfiles | sort | uniq -u
rm $foundfiles
被分离发现你可以和与列表差异,你期待什么? – cdeszaq
@cdeszaq,我想到的第一件事,但不能拿出没有临时文件或纯粹bashisms做到这一点:) –
目前我创建了一个列表,我可以找到并与文件列表不同。我认为我可以自动化这些创建我必须处理的文件列表。 – user1161495