Удалить все файлы, кроме - PullRequest
       17

Удалить все файлы, кроме

0 голосов
/ 05 сентября 2011

У меня есть папка с несколькими файлами; Мне нравится держать мою папку в чистоте от любых случайных файлов, которые могут оказаться в ней. Такие случайные файлы могут включать в себя автоматически созданные файлы резервных копий или файлы журналов, но это может быть просто, если кто-то случайно сохранит не в ту папку (моя папка).

Вместо этого мне придется все это время просматривать, и я хотел бы знать, смогу ли я создать командный файл, который будет хранить только определенное количество файлов (по имени и расположению), но удалит все, чего нет в «списке».

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

[править] Извините, когда впервые увидел вопрос, который я прочитал bash вместо batch. Я не удаляю не очень полезный ответ, поскольку, как было указано в комментариях, это можно сделать с помощью cygwin.

Вы можете перечислить файлы, исключить тот, который вы хотите сохранить с помощью grep, и отправить их в rm.

Если все файлы находятся в одном каталоге:

ls | grep -v -f ~/.list_of_files_to_exclude | xargs rm

или в дереве каталогов

find . | grep -v -f ~/.list_of_files_to_exclude | xargs rm

где ~/.list_of_files_to_exclude - файл со списком исключаемых шаблонов (по одному в строке)

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

1 голос
/ 05 сентября 2011

Белые списки для выживания файлов - невероятно опасная концепция. Я настоятельно рекомендую переосмыслить это.

Если вы должны сделать это, могу я предложить вам реализовать это таким образом:

  • Перемещение ВСЕХ файлов в область резервных копий (один создается за один прогон, например, каталог с текущей датой и временем).
  • Используйте свой белый список для копирования обратно файлов, которые вы хотели сохранить, например, с помощью copy c:\backups\2011_04_07_11_52_04\*.cpp c:\original_dir).

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

...