searchfiles.txt
ファイル名を含む名前別ファイルがあるとします。
2345098.txt
2345099.txt
2345100.txt
など(100個のファイル項目)
searchfiles.txt
さて、上記の()を入力/パラメータとして渡して、ファイルシステムファイルと一致するすべてのファイル名を一覧表示または表示しようとしています。
Linuxでこれをどのように達成できますか?
答え1
while read -r file;do [ -f "$file" ] && echo "$file";done <searchfiles.txt
答え2
locate
注文はどうですか?
#!/bin/bash
cat list | while read line; do
locate $line;
done
また、updatedb
実行することを覚えておく必要がありますlocate
。
詳細man
:
説明の検索はupdateb(8)によって準備された1つ以上のデータベースを読み取り、パターンの少なくとも1つと一致するファイル名を1行に1つずつ標準出力に書き込みます。
答え3
同じディレクトリを表示したり、フルパスを提供している場合は、searchFiles.txt
これを試してみてください。
ls `cat searchfiles.txt` 2> /dev/null
ls
としてリストするように要求しますsearchfiles.txt
。
ls
存在するファイルのみが一覧表示され、見つからないファイルについてはメッセージが表示されます。エラーを次にリダイレクトすると、/dev/null
欠落しているファイルに関するエラーメッセージは表示されません。
答え4
ファイル名に特殊文字がないと仮定、使用できls
ますcomm
:
ls | comm -1 -2 - searchfiles.txt
しかし、これは本質的に壊れやすいので注意してください。いいえ本番スクリプトで使用してください。
望むより: