2013-03-18 145 views
0

我想列出父目錄及其子目錄中的所有文件。但是,我從另一個位置運行此命令。所以,首先,我需要遍歷目錄(從我想要運行此命令的位置)。遞歸搜索Linux中父目錄中的文件

請注意,我使用find命令而不是ls,因爲我還想列出它前面每個文件的絕對路徑。這對於ls命令來說是不可能的。

這裏是我在做什麼:

cd ../../../;cd level1_dir1;find $(pwd) . -name *.* -printf "%TY-%Tm-%Td\t%p\n" 

該命令沒有顯示任何輸出。

這裏是目錄結構:

level1_dir1 

這有多個子目錄:

level2_dir1 
level2_dir2 

.... 

level2_dir10 

的每個子目錄又有它們內部子目錄和文件。

但是,現在如果我做的:

cd ../../../;cd level1_dir1/level2_dir1;find $(pwd) . -name *.* -printf "%TY-%Tm-%Td\t%p\n" 

會做好這方面的遞歸在level2_dir1所有子目錄,並顯示類似的輸出:

date level1_dir1/level2_dir1/path/to/file/filename 

所以,我想打印出所有的level2目錄,這種方式(通過使用通配符):

cd ../../../;cd level1_dir1/*;find $(pwd) . -name *.* -printf "%TY-%Tm-%Td\t%p\n" 

但它打印輸出的結果只適用於level2中的第一個目錄(即level2_dir1)

如何讓它列出所有子目錄的文件?

謝謝。

+0

你的意思是'find。 -name'*''?或者'find ../../../ -name'*'' – Bart 2013-03-18 18:02:50

+0

我首先要改變目錄到達父目錄,從那裏我將開始遞歸搜索所有文件。 – 2013-03-18 18:05:05

+0

你不需要'cd'回來。 'find'可以處理這個問題。看到我以前的評論。 – Bart 2013-03-18 18:08:25

回答

0

這個怎麼樣?

find ../../../level1_dir1 -printf "%TY-%Tm-%Td\t%p\n" 

如果你想要所有的文件,你甚至不需要find命令中的-name。如果您不想查看目錄和僅查看文件,只需在-printf之前添加「-type f」即可。

希望這有助於...