0

テキスト ファイル (ListOfAllFiles.txt) には、存在するファイルと存在しないファイルの 500 個のリストが含まれています。

存在するファイルと存在しないファイルを示す 2 つのテキスト ファイルを作成したいと思います。

これまでの私のコードは次のとおりです。

#!/bin/bash


for f in $(cat /path/to/ListOfAllFiles.txt)
do
  if [[ -f $f ]]; then 
     echo $f > /path/to/FilesFound.txt
  else
     echo $f > /path/to/FilesNOTFound.txt
  fi
done

私は何を間違っていますか??

4

1 に答える 1

1

あなたの最大の問題は、ループを通過するたびにまたはのいずれ/path/to/FilesFound.txtかが上書きされること/path/to/FilesNOTFound.txtです。を使用する代わりに、を使用>する必要があります>>。それを修正し、堅牢性のために他の改善を行うと、次のようになります。

#!/bin/bash

echo -n > /path/to/FilesFound.txt     # reset to empty file
echo -n > /path/to/FilesNOTFound.txt  # reset to empty file

while IFS= read -r f ; do
  if [[ -f "$f" ]]; then 
     echo "$f" >> /path/to/FilesFound.txt
  else
     echo "$f" >> /path/to/FilesNOTFound.txt
  fi
done < /path/to/ListOfAllFiles.txt
于 2013-07-30T22:47:54.277 に答える