Поскольку вы не можете переместить каталог во что-то, что он содержит:
$ tree.
.
└── one
└── two
2 directories, 0 files
$ mv./one./one/two/
mv: rename./one to./one/two/one: Invalid argument
Вы не можете переместить /
в другое место, так как это другое место будет само содержаться. Это файловая система, а не бутылка Кляйна.
если вы хотите найти все имена abc в файле :$ grep -R abc./Направление
или если вы хотите найти файл, который содержит abc :$ лс -1 | grep abc или $ ls abc ./Направление
Если это файлы в текущем каталоге , которые вы хотите перечислить:
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
Связанные: