我一直在尋找一種方法來列出需要存在的文件列表中不存在的文件。這些文件可以存在於多個位置。我現在擁有的一切: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