Linuxでファイルをパラメータとして渡し、ファイルシステムからその中のすべてのファイルのリストを取得するには?

Linuxでファイルをパラメータとして渡し、ファイルシステムからその中のすべてのファイルのリストを取得するには?

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

しかし、これは本質的に壊れやすいので注意してください。いいえ本番スクリプトで使用してください。

望むより:

関連情報