我需要在Linux中获取一个只有目录和文件名的递归目录列表。它需要包括所有文件,包括隐藏文件,文件名“.svn”除外。
我尝试了“ls”命令的多种组合,但无法弄明白。当使用“ls -R direname / grep -v / $”时,我得到一个目录标题,后跟冒号,我不能使用。
如果我有一个带文件的目录名测试和一个带文件的名为test2的子目录,我需要输出如下所示:
test test/.filehidden1 test/file2 test/file3.txt test/test2.log test/test2/file.hidden1 test/test2/file2.boo test/test2/file3.boo2
请注意,没有前导斜杠
答案 0 :(得分:1)
这应该做:
find . ! -path \*.svn\*
这告诉find以递归方式列出路径名不包含.
的{{1}}中的所有文件。这并不完美,因为它可能隐藏文件.svn
。
答案 1 :(得分:1)
find . -name .svn -prune -o -print
-prune
告诉它不要进入任何匹配的目录。
答案 2 :(得分:0)
这样的事情:
find DIRNAME ! -name .svn
答案 3 :(得分:0)
我需要在Linux中获取一个只有目录和文件名的递归目录列表。它需要包括所有文件,包括隐藏文件,文件名“.svn”除外。
您想获取Subversion存储库中的文件列表吗? 这样就可以了:
svn ls -R
如果没有,那么您可以使用find
:
find . ! -path '*/.svn/*' ! -name .svn
你提到“注意没有前瞻性的斜线”。
如果这非常重要,那么find
命令可以改为:
find * .[^.]* ! -path '.svn/*' ! -name .svn