2013-08-26 64 views
1

我需要一個將目錄和子目錄寫入文本文件的腳本。用於列出文本文件中子目錄和文件的Bash腳本

例如,腳本位於/ Mainfolder中,在此文件夾中有四個其他文件夾。每個包含幾個文件。

現在我想讓腳本在文本文件中編寫每個文件的路徑。

Subfolder1/File1.dat 
Subfolder1/File2.dat 
Subfolder2/File1.dat 
Subfolder3/File1.dat 
Subfolder4/File1.dat 
Subfolder4/File2.dat 

重要的是,在列表前沒有斜線。

回答

1

如果你的bash的版本是足夠高,你可以做這樣的:

#!/bin/bash 
shopt -s globstar 
echo ** > yourtextfile 
3

使用find命令:

find Mainfolder > outputfile 

,如果你只想列出的文件,做

find Mainfolder -type f > outputfile 

如果您搜索的是,您也可以去掉領先的./當前目錄,與%P格式選項:

find . -type f -printf '%P\n' > outputfile 
+1

最後的'find'行應該是Q的答案! +1用於查找內置printf支持。 – Kent

1

該解決方案假定子目錄包含唯一的文件 - 它們不包含反過來任何目錄。

find . -type f -print | sed 's|^.*/S|S|' 

我在四個子目錄的每一箇中創建了一個文件。原來輸出爲:

./Subfolder1/File1.dat 
./Subfolder4/File4.dat 
./Subfolder2/File2.dat 
./Subfolder3/File3.dat 

的濾波輸出是:

Subfolder1/File1.dat 
Subfolder4/File4.dat 
Subfolder2/File2.dat 
Subfolder3/File3.dat 
1

您可以使用此找到-exec

find . -type f -exec bash -c 'f="{}"; echo "${f:2}"' \; 

這將消除打印從當前路徑開始的所有文件./從前面。

相關問題