Mee*_*ies 7 command-line bash directory find
我有一个包含许多子目录的目录。这些子目录中的每一个都包含一个子目录,它们都具有相同的名称。我想在命令行上生成所有这些文件的列表。因此,例如,如果我有:
dir1/
file1.txt
subdir/
relevant_file1.c
relevant_file2.c
dir2/
file2.txt
subdir/
relevant_file3.txt
relevant_file4.java
dir3/
subdir/
relevant_file5.cpp
irrelevant_subdir/
unimportant_file.txt
dir4/
subdir/
Run Code Online (Sandbox Code Playgroud)
我想要以下输出:
dir1/subdir/relevant_file1.c
dir1/subdir/relevant_file2.c
dir2/subdir/relevant_file3.txt
dir2/subdir/relevant_file4.java
dir3/subdir/relevant_file5.cpp
Run Code Online (Sandbox Code Playgroud)
我认为使用应该不会太难find
,但我不太能弄明白。这个问题很难搜索,因为它太具体了,仅仅搜索“通过匹配路径查找文件”不会产生任何有用的东西。
你实际上不需要find
这个。一个简单的方法ls
:
$ ls -1 */subdir/*
dir1/subdir/relevant_file1.c
dir1/subdir/relevant_file2.c
dir2/subdir/relevant_file3.txt
dir2/subdir/relevant_file4.java
dir3/subdir/relevant_file5.cpp
Run Code Online (Sandbox Code Playgroud)
或者,如果您想对这些文件做一些事情而不只是列出它们,请使用 shell globs:
for file in */subdir/*; do command "$file"; done
Run Code Online (Sandbox Code Playgroud)
当然,这将列出任何名为subdir
. 包括目录、符号链接、设备文件或其他任何内容。如果要将其限制为普通文件,请find "*/subdir" -type f
按照@Carl 的建议使用,或添加文件测试:
for file in */subdir/*; do [ -f "$file" ] && command "$file"; done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
514 次 |
最近记录: |