Поиск и удаление всех файлов, которые начинаются с. в каталоге

Я пытаюсь найти и удалить все файлы, которые начинаются с . в каталоге, и я знаю, что могу сделать это через командный терминал, но я ОЧЕНЬ новичок в Ubuntu и не совсем знаю, обходных команд пока нет. Любая помощь будет оценена!

2
задан 27 April 2014 в 03:16

2 ответа

Скрытые файлы не должны быть двоичными файлами.

можно использовать следующую команду, чтобы сделать это:

find /path/to/start/ -maxdepth 1 -name ".*" -type f -delete

Это будет искать файлы в /path/to/start/ запуск с точки (-name ".*", * средства все), не ища в подкаталогах (-maxdepth 1, изменение 1 для поиска глубже) только файлы (-type f) и удалит все результаты (-delete).

Это - не всегда хорошая идея удалить эти файлы! быть уверенным, что Вы знаете то, что Вы делаете прежде, чем выполнить это. Некоторые файлы скрыты по причине.

0
ответ дан 27 April 2014 в 03:16

Можно также сделать эту оболочку использования шарики и для цикла:

for file in .[^.]*; do rm "$file"; done

for file in GLOB; do ... done развернет ШАРИК до всех имен файлов, которые соответствуют ему, выполняют итерации через эти файлы, последовательно сохраняя каждого как $file и затем выполненный команды между do и done на них.

Шарик .[^.]* будет соответствовать всем файлам, начинающимся a . и сопровождаемый неточечным символом ([^.]). Последний необходим, чтобы не соответствовать . и ../.

Так, например:

$ ls -1A
.dot and spaces
.dotfile1
internal.dot
nodot
$ for file in .[^.]*; do rm -v "$file"; done
removed ‘.dot and spaces’
removed ‘.dotfile1’
$ ls -1A
internal.dot
nodot

Если Вы хотите выполнить это для каталога кроме того, Вы в настоящее время находитесь в, просто добавляете путь к шарику. Например:

for file in /home/terdon/foobar/.[^.]*; do rm "$file"; done

Конечно, сам цикл не нужен как @gniourf_gniourf указанный в комментариях, и можно просто удалить все файлы с

rm .[^.]*
1
ответ дан 27 April 2014 в 03:16

Другие вопросы по тегам:

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