Если вы хотите переместить все файлы и каталоги со скрытыми именами (, начинающимися с точки ), в другое место:
mv.[^.]* old-dot-files/
Или всякий раз, когда вы хотите что-то сделать со всеми точечными -файлами или точечными -каталогами в каталоге:
for name in.[^.]*; do
# process "$name"
done
Обратите внимание, что шаблон .??*
требует, чтобы совпадающие имена содержали не менее трех символов, поэтому имена, подобные .a
, не будут выбраны. .[^.]*
, с другой стороны, пропустит все, что содержит двойную точку в начале имени.
Возможно, будет лучше явно проверить совпадающие имена:
for name in.*; do
# expecting a regular file
if [ -f "$name" ]; then
# process "$name"
fi
done
for name in.*; do
# expecting a directory other than. and..
if [ -d "$name" ] && [ "$name" != '.' ] && [ "$name != '..' ]; then
# process "$name"
fi
done
По моему опыту, желание сделать что-то с полным -файлом или точечным -каталогом в каталоге возникает крайне редко.
Если вы уверены, что больше ничего не будет иметь ".sb -" в имени файла, вы можете автоматически удалить их с помощью чего-то вроде этого:
find. -type d -name '*.sb-*' -prune -exec rm -rf {} \;
Это найдет все файлы из каталога, в котором он запущен, измените find.
на начальный каталог, в котором вы хотите запустить это(find <start dir>
). Для всех файлов, которые он находит с «.sb -» в имени файла, find удалит файл с rm
.