2017-09-01 62 views
0

Shell腳本顯示目錄和內容列表Shell腳本顯示目錄和內容列表

我有一個名爲Projects文件夾,該文件夾中我有5個項目。爲了這個問題,我只是簡單地說它們被標記爲:(Project1,Project2等)。當我的文件夾上運行ls我得到這個:(重新標註爲簡單起見):

Project1 Project2 Project3 Project4 Project5 

在這些5個文件夾,我在每個目錄1個.txt文件。我怎樣才能創建一個shell腳本來列出這樣的文件夾中的內容:

1. Project1 
    > readme.txt 

2. Project2 
    > readme.txt 

3. Project3 
    > readme.txt 

4. Project4 
    > readme.txt 

5. Project5 
    > readme.txt 

所以基本上列出與計數器目錄和父文件夾下單的子目錄。

P.S.在文件夾名稱下使用的符號不必是'>',我只是使用它,所以在使用' - '時不會創建子彈。

+1

'tree'命令執行此操作。您可能需要先安裝它。 –

+0

這很酷。我從來沒有聽說過「樹」,但當看它時,它看起來比我在例子中組織它的方式更冷。 – iamr00t

回答

1

顯示信息最簡單的方法就是使用要查看分層表單中所有內容的目錄中的$ tree命令。

如果尚未安裝(如果使用的Linux應該是)

$ sudo apt update 
$ sudo apt upgrade 
$ sudo apt install tree 

如果使用的是Mac

$ brew update 
$ brew upgrade 
$ brew install tree 

此命令將顯示所有目錄,該目錄下面的子目錄運行tree命令from

希望這會有所幫助

0
#!/bin/sh 

topdir='/tmp/shell-bash.DmgIjp5V' 
readme='README.txt' 
i=0 

for pathname in "$topdir"/*/"$readme"; do 
     project="$(basename "$(dirname "$pathname")")" 
     printf '%d. %s\n\t- %s\n\n' "$((++i))" "$project" "$readme" 
done 

測試設置:

bash-4.4$ mkdir Project{1..5} 
bash-4.4$ touch Project{1..5}/README.txt 

運行它:

bash-4.4$ sh script.sh 
1. Project1 
     - README.txt 

2. Project2 
     - README.txt 

3. Project3 
     - README.txt 

4. Project4 
     - README.txt 

5. Project5 
     - README.txt 

詳情:

腳本只是尋找兩個級別低於$topdir所有README.txt文件(這將是您的Projects目錄)並重復這些。

project變量將在$topdir下保存項目目錄的名稱。

printf聲明根據您的規格格式化並輸出數據。

我在這裏使用basenamedirname,但有些人認爲使用變量替換更好(當然更快)。不過,爲了清晰起見,我會保留這些內容。