[英]Bash Script to load all files in a directory/sub-directories into a Array
我正在嘗試編寫一個腳本,該腳本會將帶有路徑的所有文件名加載到bash腳本中的數組中。
假設我想要/ home / documents /中的所有文件夾和子文件夾的文件,它將在末尾提供文件數組。
我當前的腳本非常基礎,但是應該具有一些功能。
num_partitions=0
for file in /home/documents/*; do
date_partition[$num_partitions]=${file##*/}
((num_partitions++))
echo ${date_partition}
done
當前,它僅打印黑屏。 如何修復它以獲得所需的功能並正確打印我們的圖像?
我是Bash的新手,這實際上是我的第一個腳本。 請幫忙。
首先,通常,您不想解析ls的輸出... http://mywiki.wooledge.org/ParsingLs
接下來,您的方法的邏輯沒有錯。 不過,有一種更簡單的方法可以用來完成此任務!
ar=( $(find /home/documents/*) ); echo "${#ar[@]}"; echo "${ar[2]}"
分解我們有。
$( find /home/documents/* )
這是命令替換。 它捕獲寫入其中的命令的輸出。 這樣,您可以執行類似於output=$( find .)
,現在輸出是一個包含find命令結果的變量。
接下來我們有
ar=()
()
創建一個數組。 現在,此數組的輸入將成為find命令的輸出。 因此,當我們將它們放在一起時,最終得到“從此find命令的輸出創建一個數組”。
該命令的其余部分僅顯示ar
實際上是一個數組。 我們先打印出數組的長度,然后打印出索引2處的值。
建議谷歌搜索是... bash中的命令替換。 用bash中的命令制作數組。 如何在bash中使用數組。
注意:請注意, $( )
中的命令可以包含|
其他命令,例如find . | tr -d "." | ./some_other_command
find . | tr -d "." | ./some_other_command
find . | tr -d "." | ./some_other_command
。 另外,我建議您閱讀自“”以來的find手冊頁。 和“ ..”可能會出現在您現在編寫的數組中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.