Я пытаюсь найти, что оболочка управляет, чтобы возвратил имена файлов файлов, которые содержат другие файлы, которые имеют то же имя как их в определенном каталоге
Похоже, что вы запрашиваете команду, которая находит файлы, имена которых совпадают с именами их родительского каталога.
Вы можете сделать это, используя 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 Если вы хотите напечатать только имя (а не полный путь), вы можете использовать -printf
[ 1116]
find . -regextype egrep -regex '.*/([^/]*)/\1 -printf '%f\n'
./baz/baz
Если вы хотите напечатать только имя (а не полный путь), вы можете использовать -printf
[ 1116]
find . -regextype egrep -regex '.*/([^/]*)/\1 -printf '%f\n'
Если вы конкретно хотите найти простые файлы , которые соответствуют их родителям (исключая соответствующие подкаталоги ), вы можете добавить -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 Если вы хотите напечатать только имя (а не полный путь), вы можете использовать -printf
[ 1116]
find . -regextype egrep -regex '.*/([^/]*)/\1 -printf '%f\n'
./baz/baz
Если вы хотите напечатать только имя (а не полный путь), вы можете использовать -printf
[ 1116]
find . -regextype egrep -regex '.*/([^/]*)/\1 -printf '%f\n'