ディレクトリ内のファイル全体を検索する[閉じる]

ディレクトリ内のファイル全体を検索する[閉じる]

ファイルに特定のIDのリストがあります。

file1

10012074
10182922
10193829
10213367
10302542
10332316
10492906
10592572
10606805
10627446
10681600
10697905
10758584
10882944
10919833
10921530
11021848

このディレクトリには30,000個のファイルがありますdir。部分ファイルのプレビュー:

16320386  23505634  31404647  40262433  49727240  59977762  72739048
16321609  23507673  31409545  40263912  49731993  59983079  72743197
16321830  23508959  31410806  40274881  49733838  59991144  72743532
16323719  23513175  31413679  40277233  49737047  60000337  72743644
16324483  23513237  31415413  40280305  49739812  60006875  72746735
16325027  23514404  31421015  40283351  49741053  60017537  72748827
16326681  23516543  31422747  40288023  49752294  60022678  72751898
16327485  23517971  31427324  40290554  49752684  60023962  72752027
16333225  23518024  31427909  40291536  49755190  60025125  72754762
16334779  23520574  31428484  40291746  49756105  60029433  72755014
16336857  23522410  31430611  40293529  49756156  60034076  72757030

このディレクトリから.txtの内容と一致する同じ名前のファイルを削除しますfile1

言うfile1:30,000個のファイルを含むディレクトリのすべての関連コンテキストを新しいファイルにマージしたいと思います。つまりfile1、抽出したファイルにリストされているファイルを1つのファイルにリンクしたいと思いますdir

ベストアンサー1

dirこの30,000個のファイルが現在のディレクトリのサブディレクトリにある場合:

xargs -I XX cat dir/XX <file1 >result.txt

これにより、リストされているファイルがリンクされ、file1結果がresult.txt

xargsファイル名はここから読み取られ、file1各ファイルに対して実行されます。catコマンドの内容をファイル名に-I XX変更するように指示します。xargsXXcat dir/XX

また、使用することができます

cd dir
xargs cat <../file1 >../result.txt

これは高速ですが、同じ結果が得られます。違いは、cat各ファイルを個別に実行するのではなく、catできるだけ多くのファイル名で呼び出されることです。

おすすめ記事