我一直在寻找一种方法来列出不存在于需要存在的文件列表中的文件。文件可以存在于一个以上的位置。我现在拥有的:

#!/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

最佳答案

#!/bin/bash
fileslist="$1"
while read fn
do
  FPATH=`find . -type f -name $fn`
  if [ "$FPATH." = "." ]
  then
   echo $fn
  fi
done < $fileslist

你很亲密!

关于bash - Bash脚本列出未找到的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8948104/

10-16 18:40