2013-03-18 143 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”即可。

希望这有助于...