LINUX.ORG.RU

Какой командой можно удалить все файлы и каталоги, начинающиеся с точки?

 


1

1

Казалось бы, простая задача, но я столкнулся с трудностями.

Во первых, если вводить rm -rf /Volumes/Disk/. - он не удаляет все с точкой в подкаталогах.

Во-вторых, команда find /Volumes/Disk/. -type f -print | xargs rm -rf не работает - xargs: unterminated quote

В-третьих, при выполнении команд также затрагиваются . и .. и find ищет в каталогах выше.

Подскажите, как же удалить все каталоги и файлы, начинающиеся с точки в /Volumes/Disk/ и подкаталогах ???

Ко



Последнее исправление: Anatuz (всего исправлений: 1)

$ cd mydir
$ find . -name ".*" | xargs rm -rf

Он возмутится что не может удалить текущий каталог, но должен отработать

Deleted
()

find -name .\* -delete

anonymous
()

find Volumes/Disk/ -regex '^Volumes/Disk/\.[^\.].+' -exec rm -r «{}» +;

ii343hbka ★★★
()

регистранты соревнуются в убогости :3

anonymous
()

Вот это решение работает (проверял на другом компе).

find /Volumes/Disk -name ".*" -exec rm -rf «{}» +;

Будет ли оно безопасно? Всмысле не сотрет чего лишнего?

Anatuz
() автор топика

rm -f .??*

Правада, он не удалит объекты типа .a, зато не грохнет лишнего

no-dashi ★★★★★
()
Ответ на: комментарий от Anatuz

Отвечает man find:

-exec command ; Execute command; true if 0 status is returned. All following arguments to find are taken to be arguments to the command until an argument consisting of ';' is encountered. The string '{}' is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find.


Так понятно?

yars068 ★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)
Ответ на: комментарий от yars068

ну тогда ещё немного цитат:

Warnings: Don't forget that the find command line is evaluated as an expression, so putting -delete first will make find try to delete everything below the starting points you specified. When test‐ ing a find command line that you later intend to use with -delete, you should explicitly specify -depth in order to avoid later surprises. Because -delete implies -depth, you cannot usefully use -prune and -delete together.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.