files.txt
いくつかのファイル名を含むというファイルがあります。ファイルを読み取り、aを実行して見つかったfind
ファイル名を返すコマンドがあります。その逆に行う方法が気になります。私が望むのは、見つからなかったファイル名を表示することです。
例:
$ ls
file1 file2 file3 files.txt
$ cat files.txt
file1
file2
file3
file4
$ while read x; do (find . -iname "$x"); done < files.txt
./file1
./file2
./file3
file4
この例では、ファイル名は.txtにありますがフォルダにはないため、結果に表示したいと思います。
ベストアンサー1
使用grep
(現在のフォルダ内のファイルの名前に改行文字が含まれていないと仮定):
$ grep -v -i -F -x -f <(printf '%s\n' *) files.txt
file4
オプション:
-v
一致を取り消し、一致しない行を選択します。-f
printf '%s\n' *
現在のディレクトリのファイルを一覧表示しますgrep
。-F
パターンを固定文字列として解釈します(正規表現の代わりに)。-x
全行と一致-i
大文字と小文字を区別しない一致(あなたと同じ-iname
)。