簡體   English   中英

Bash腳本將目錄/子目錄中的所有文件加載到數組中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM