Як видалити тимчасові файли TextMate за допомогою rm?


1

Зауважте, що я не намагаюся відключити створення цих файлів. Я хочу тримати їх, поки я не буду готовий внести зміни до свого управління джерелами.

Файли розкидані по багатьох підкаталогах основного каталогу вихідного коду і мають формат "._". Наприклад, test.txt стає ._test.txt.

Я спробував цю команду, але вона не працює:

rm -rf ._*

Будь-які думки?

Відповіді:


3

GNU find має -deleteможливість. Якщо ви знайдете GNU, це має спрацювати (і воно повинно бути захищене від будь-яких проблем із пробілами та іншими смішними символами у назвах файлів):

find . -name '._*' -delete

З документації ( info find):

-- Action: -delete
    Delete files or directories; true if removal succeeded.  If the
    removal failed, an error message is issued.

    The use of the `-delete' action on the command line automatically
    turns on the `-depth' option (*note find Expressions::).  This can
    be surprising if you were previously just testing with `-print',
    so it is usually best to remember to use `-depth' explicitly.

    If `-delete' fails, `find''s exit status will be nonzero (when it
    eventually exits).

ОС X не постачається разом із GNU find.
slhck

2

Вирішили використовувати це замість:

find . -name "._*" -exec rm {} \;

Однак я хотів би почути, чи є кращий спосіб зробити це.


Використання findі xargsтрохи складне. Прочитайте посібник з пошуку, який говорить: "Однак ви можете розглянути -print0основне разом з xargs -0".
slhck

Використання {}таким чином призведе до серйозних помилок у файлах із іменами із вбудованим пробілом. Майже завжди корисні нам '{}'.
Кріс Джонсон

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.