Поиск файлов с определенным шаблоном

Поскольку вы не можете переместить каталог во что-то, что он содержит:

$ tree.
.
└── one
    └── two

2 directories, 0 files
$ mv./one./one/two/
mv: rename./one to./one/two/one: Invalid argument

Вы не можете переместить /в другое место, так как это другое место будет само содержаться. Это файловая система, а не бутылка Кляйна.

1
31.08.2019, 04:55
2 ответа

если вы хотите найти все имена abc в файле :$ grep -R abc./Направление

или если вы хотите найти файл, который содержит abc :$ лс -1 | grep abc или $ ls abc ./Направление

-1
27.01.2020, 23:30

Если это файлы в текущем каталоге , которые вы хотите перечислить:

ls./*abc*

Для циклического просмотра этих файлов:

for fname in./*abc*; do
    # do something with "$fname"
done

Если вы хотите найти их в текущем каталоге или где-либо в каком-либо подкаталоге (рекурсивно):

find. -type f -name '*abc*' -print

(это предполагает, что все имена, которые вы хотите найти, являются именами обычных файлов, т. е. не именами каталогов и т. д.)

Если вы хотите что-то сделать с этими именами:

find. -type f -name '*abc*' -exec sh -c '
    for fname do
        # do something with "$fname" here
    done' sh {} +

Использование шаблона подстановки **, доступного в некоторых оболочках (по умолчанию в zshи с shopt -s globstarвbash)для обратного сопоставления имен файлов:

for fname in./**/*abc*; do
    # do something with "$fname"
done

С оболочкой zsh, также убедившись, что мы сопоставляем только имена обычных файлов (, то есть не каталоги и т. д.):

for fname in./**/*abc*(.); do
    # do something with "$fname"
done

Связанные:

3
27.01.2020, 23:30

Теги

Похожие вопросы