我有一個包含近 400 個檔案的目錄,我想將所有 .txt 檔案指派給我正在編寫的 bash 腳本中的單一變數。但是我不太確定該怎麼做。我純粹對文件名本身感興趣,而不是所述文件的內容。
答案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
而不是內容。另外,此查找是遞歸查找,您可以更改參數以使其僅在一個資料夾內搜尋。