約 400 個のファイルがあるディレクトリがあり、作成中の bash スクリプトで、すべての .txt ファイルを 1 つの変数に割り当てたいと考えています。ただし、その方法がよくわかりません。ファイル名自体にのみ興味があり、ファイルの内容には興味がありません。
答え1
名前が必要な場合は、配列に割り当てるのがおそらく最善でしょう。
names=( *.txt )
内容が知りたい場合は
contents="$( cat *.txt )"
答え2
次のようにします。このワンライナーは、フォルダー.txt
内のすべてのファイルの配列を生成します。/root/tmpdir
[root@localhost ~]# export LIST=() ; for file in `find /root/tmpdir -name *.txt -exec readlink -e '{}' \;` ; do LIST+=($file) ; done
[root@localhost ~]# echo ${LIST[*]}
/root/tmpdir/newdir/file.txt /root/tmpdir/file.txt
[root@localhost ~]#
または、次のように区切られたファイル名を含む変数を作成することもできます,
。
[root@localhost ~]# export LIST; for file in `find /root/tmpdir -name *.txt -exec readlink -e '{}' \;` ; do LIST=$LIST$file, ; done
[root@localhost ~]# echo $LIST
/root/tmpdir/newdir/file.txt,/root/tmpdir/file.txt,
追伸
どちらの例も、ファイルの内容ではなく拡張子を検索します.txt
。さらに、この検索は再帰的なものなので、引数を変更して 1 つのフォルダー内のみを検索するようにすることができます。