我正在尝试找到一个 shell 命令,该命令返回包含特定目录中与其同名的其他文件的文件名
答案1
您似乎要求的是一个查找名称与其父目录相同的文件的命令。
您可以使用 GNU 来实现这一点find
,使用正则表达式匹配,该匹配使用对前一个路径组件的反向引用,例如
find path/to/somedir -regextype egrep -regex '.*/([^/]*)/\1$'
如果你特别想找到普通的文件匹配其父级(不包括匹配的子级)目录)你可以添加-type f
到谓词列表中(或者如果你想仅有的查找子目录,使用-type d
)。
为了说明,给定
$ tree
.
├── bar
│ ├── file1
│ ├── file2
│ └── file3
├── baz
│ ├── baz
│ ├── file1
│ ├── file2
│ └── file3
└── foo
├── file1
├── file2
└── file3
3 directories, 10 files
然后
$ find . -regextype egrep -regex '.*/([^/]*)/\1$'
./baz/baz
如果只想打印名称(而不是完整路径),可以使用-printf
find . -regextype egrep -regex '.*/([^/]*)/\1$' -printf '%f\n'