Удаление файлов резервных копий на внешний жесткий диск

PomoDoneApp выглядит неплохо. Работал отлично в Ubuntu 16.04, не знаю о Ubuntu 12.04.

1
задан 4 February 2013 в 21:17

1 ответ

В командной строке в оболочке вы можете использовать команду, подобную

rm -i *~

, чтобы удалить из текущего каталога те файлы, имена которых заканчиваются на ~. Флаг -i сообщает rm (команда «удалить») для запроса перед удалением. Если вы не знакомы с использованием команд оболочки, держите флаг -i там, пока вы не будете знакомы, потому что незначительные ошибки, такие как место в неправильном месте, могут иметь серьезные последствия.

Перечислить файлы, которые будет затронута в текущем каталоге, вы можете сказать любое из следующих.

ls *~
ls -l *~
ls -la *~

Чтобы сделать конкретный каталог текущим рабочим каталогом, используйте команду cd и имя каталога. Например, если вы обнаружите, что ваш резервный диск установлен на /media/xyz (либо с помощью команды cat /proc/mounts, упомянутой в другом ответе, либо более непосредственно с помощью команды mount без параметров или через df), вы сказали бы: cd /media/xyz, чтобы сделать каталог верхнего уровня резервного диска текущим рабочим каталогом.

Изменить: команда rm -i *~ влияет на файлы только в текущем каталоге и не влияет на подкаталоги. Чтобы лечить неопределенные уровни каталогов, используйте подход find, указанный в другом ответе. Тем не менее, если вы знаете, как глубоко каталоги вложены, и уровень неглубокий, вы можете использовать команду вроде

rm -i  *~  */*~  */*/*~

, который, как показано будет удалять ~ файлов в текущем каталоге, его прямые подкаталоги, и их прямые подкаталоги

Edit.

: Как gertvdijk упоминается в комментариях, неуклюжий rm показано в предыдущем редактирования можно упростить с помощью ** Bash 4.0+ рекурсивная подстановка оболочки (1). После ввода команды shopt -s globstar автономные экземпляры ** будут рекурсивно перебираться, т.е. будут стоять за все имена в текущем каталоге и его потомках. (shopt -u globstar выключается, globstar выключен, но поскольку маловероятно ввести ** по ошибке, кажется разумным оставить его включенным в интерактивных оболочках.) Таким образом, после shopt -s globstar команда rm -i **/*~ удалит ~ файлов в текущем каталоге и его потомках. Обратите внимание, что если такие имена файлов содержат более нескольких миллионов символов, командная строка может стать слишком длинной для обработки bash. Подход find не имеет этого конкретного ограничения.

1
ответ дан 25 May 2018 в 01:47
  • 1
    Это тоже сработает, но потребует много работы, если речь идет о множестве каталогов. Всего за несколько файлов я предпочел бы ваш подход, а еще несколько - для моего подхода find. – gertvdijk 4 February 2013 в 22:16
  • 2
    Кажется, он работает очень хорошо, и мне понравился флаг -i. Но это будет удалять файлы только в основном каталоге или в подпапках? – Eduardo 4 February 2013 в 22:24
  • 3
    @EduardoGoncalves, только в одном каталоге. См. Править. – James Waldby - jwpat7 4 February 2013 в 22:57
  • 4
    @ jwpat7 Или просто используйте Bash 4.0+ рекурсивную оболочку globing . – gertvdijk 4 February 2013 в 22:59

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

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