Каков синтаксис Bash для удаления временных файлов с “~” в имени файла? Кажется, Bash даже не распознает, что эти файлы существуют.

Вопрос или проблема

У меня много старых временных файлов от приложений, таких как MS Word, Excel и других, с именами типа ~my file.docx. Приложения закрыты, но временные файлы остаются.

MS Word, Excel и другие могут автоматически сохранять редактируемые файлы, чтобы предотвратить случайную потерю данных, как файлы, начинающиеся с символа ~, однако, если имя файла начинается с символа ~, это не доказывает, что этот файл является старым временным файлом, потому что другие приложения и пользователи Ubuntu также могут создавать файлы, которые начинаются с символа ~. Будьте осторожны с файлами, которые вы удаляете с помощью следующих команд, и запустите find без rm после него, чтобы проверить, какие файлы будут удалены, не удаляя ничего.


Поскольку ~ является псевдонимом для вашего домашнего каталога в Bash, вам необходимо предотвратить его разворачивание (например, рассматривая ~ как буквальный символ, заключив его в одинарные или двойные кавычки). Чтобы найти все файлы, которые начинаются с символа ~ в вашем текущем каталоге и его подкаталогах, выполните следующую команду:

find . -type f -name '~*'

Это выведет список всех файлов, которые начинаются с ~, чтобы показать вам, что у вас есть, не удаляя ничего. Чтобы удалить файлы, которые начинаются с символа ~ в вашем текущем каталоге и его подкаталогах, выполните следующую команду:

find . -type f -name '~*' -delete

find . ищет в текущем каталоге (обозначенном .) и всех его подкаталогах
-type f совпадает только с файлами и игнорирует каталоги
-name '~*' находит файлы, которые начинаются с символа ~
-delete удаляет найденные файлы

Ответ или решение

Конечно, давайте разберем вопрос касательно удаления временных файлов, содержащих тильду ("~") в имени файла, через Bash. Важность этой темы заключается в том, что временные файлы создаются множеством программ, таких как Microsoft Word и Excel, в целях предотвращения потери данных. Однако, после закрытия приложений, эти временные файлы могут оставаться на компьютере, занимая место и потенциально создавая беспорядок в файловой системе.

Теория

Тильда ("~") в командной оболочке Bash ассоциируется с текущим домашним каталогом пользователя. Однако в именах файлов она часто используется как первый символ временных файлов, создаваемых различными приложениями. Когда мы говорим об удалении таких файлов с именами, начинающимися с тильды, важно различать систематическую и некорректную интерпретацию этих файлов.

Когда вы используете тильду в именах файлов в Bash, она может интерпретироваться как ссылка на ваш домашний каталог, а не как буквально символ "~". Поэтому возникает проблема, когда Bash не позволяет корректно идентифицировать файлы с тильдой в начале их имени, так как интерпретатор пытается расширить их до каталога, а не так, как это задумано программами.

Пример

Рассмотрим пример команды, которую вы можете использовать в Bash для поиска всех файлов, начинающихся с тильды, в текущем каталоге и его подкаталогах:

find . -type f -name '~*'

В этом примере команда find действует следующим образом:

  • . обозначает, чтобы искать в текущем каталоге и всех его подкаталогах.
  • -type f указывает, что мы ищем только файлы (игнорируя директории).
  • -name '~*' специфично задаёт шаблон, где ~* значит «все файлы, которые начинаются с тильды».

Применение

Для удаления таких файлов используется флаг -delete:

find . -type f -name '~*' -delete

Это дополнение к предыдущей команде фактически удаляет найденные файлы. Тем не менее, перед удалением файлов всегда рекомендуется выполнить команду find без флага -delete, чтобы убедиться, что будет удалено именно то, что нужно, так как файлы с тильдой могут быть созданы и другими приложениями, и могут быть важны.

Конкретные шаги:

  1. Перейдите в каталог, где вы хотите проверить наличие и удалить временные файлы.
  2. Выполните команду find . -type f -name '~*' для просмотра всех файлов, которые начинаются с тильды. Визуально просмотрите список файлов.
  3. Если вы уверены, что файлы могут быть безопасно удалены, выполните find . -type f -name '~*' -delete.

Заключение

Представленный подход обеспечивает безопасный способ управления временными файлами в Linux или Unix-подобных системах. Настоятельно рекомендуется быть внимательным при удалении файлов с использованием командной строки, чтобы избежать случайного удаления важных данных. Всегда проверяйте список файлов, чтобы подтвердить, что они действительно временные и больше не нужны, прежде чем приступать к их удалению. This practice not only helps maintain a clean and efficient file system but also encourages precise and deliberate management of digital resources.

Оцените материал
Добавить комментарий

Капча загружается...