Мне нужна команда, чтобы удалить все файлы из каталога (и subdir), которые находятся под 20 МБ

За исключением определенных расширений файлов. (удаление мусора, отличного от файлов субтитров из видеокаталога)

5
задан 5 November 2010 в 13:29

24 ответа

здесь:

find . -type f -name *.bak -size -20M -exec rm {} \;

с -name *.bak вы ищете файлы с расширением «bak», -type f ищет файлы (не каталоги), -size -20M дает вам все файлы меньше чем 20 МБ (-size +20M для обратного поиска файлов размером более 20 МБ), а с -exec вы удаляете результаты этого поиска.

1
ответ дан 25 July 2018 в 22:57
  • 1
    Вы должны указать шаблон, а также {}, чтобы предотвратить расширение оболочки. – Li Lo 4 November 2010 в 02:09
  • 2
    Нет, вам нужно только указать "*.bak", а не {}. И вместо -exec rm {} \; вы можете просто использовать -delete. И вопрос был not для удаления файлов некоторого расширения. – user unknown 20 March 2011 в 03:41

Сначала запустите

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print

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

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print0 | xargs -0 /bin/rm -f

и запустите ее. Он должен делать то, что вы хотите. Вы можете повторить ! -name '*.srt' часть больше раз, если вам нужно исключить больше файлов. Будьте осторожны, чтобы включить одинарные кавычки: они важны, чтобы предотвратить расширение оболочки с расширением.

5
ответ дан 25 July 2018 в 22:57
  • 1
    Я утверждаю, что -exec rm {} \; или -delete чище, чем трубопроводы через xargs – Oli♦ 4 November 2010 в 02:22
  • 2
    Я утверждаю, что использование -delete или -exec rm '{}' \; более подвержено ошибкам, чем использование xargs -0: -delete зависит от положения, поэтому вы можете случайно удалить больше, чем вы планировали, а -exec rm '{}' \; не указывает, как он относится к необычным имена файлов. – Li Lo 4 November 2010 в 03:08
  • 3
    @Oli: и {} нужно указывать так, чтобы избежать расширения оболочкой – Li Lo 4 November 2010 в 03:10
  • 4
    find лучше всего лишить каких-либо действий, кроме -print0. Он в одиночку ломает большинство принципов Unix «делайте одно, делайте это хорошо, взаимодействуйте с другими программами». (Да, я знаю, сколько устаревших скриптов зависит от -exec, поэтому я рекомендую людям притворяться , что их не существует) – msw 4 November 2010 в 07:12
  • 5
    @Li Lo: Нет, {} не нужна цитата. Попробуй. – user unknown 20 March 2011 в 03:45
find . -type f ! -name '*.ext' -size -20M -delete

легче вводить и запоминать, чем что-либо еще. Вы должны помнить, что -delete зависит от позиции и удаляет без дальнейшего уведомления и trashcan.

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

find . -type f ! -name '*.ext' -size -20M
1
ответ дан 25 July 2018 в 22:57

здесь:

find . -type f -name *.bak -size -20M -exec rm {} \;

с -name *.bak вы ищете файлы с расширением «bak», -type f ищет файлы (не каталоги), -size -20M дает вам все файлы меньше чем 20 МБ (-size +20M для обратного поиска файлов размером более 20 МБ), а с -exec вы удаляете результаты этого поиска.

1
ответ дан 27 July 2018 в 01:39
  • 1
    Вы должны указать шаблон, а также {}, чтобы предотвратить расширение оболочки. – Li Lo 4 November 2010 в 02:09
  • 2
    Нет, вам нужно только указать "*.bak", а не {}. И вместо -exec rm {} \; вы можете просто использовать -delete. И вопрос был not для удаления файлов некоторого расширения. – user unknown 20 March 2011 в 03:41

Сначала запустите

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print

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

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print0 | xargs -0 /bin/rm -f

и запустите ее. Он должен делать то, что вы хотите. Вы можете повторить ! -name '*.srt' часть больше раз, если вам нужно исключить больше файлов. Будьте осторожны, чтобы включить одинарные кавычки: они важны, чтобы предотвратить расширение оболочки с расширением.

5
ответ дан 27 July 2018 в 01:39
  • 1
    Я утверждаю, что -exec rm {} \; или -delete чище, чем трубопроводы через xargs – Oli♦ 4 November 2010 в 02:22
  • 2
    Я утверждаю, что использование -delete или -exec rm '{}' \; более подвержено ошибкам, чем использование xargs -0: -delete зависит от положения, поэтому вы можете случайно удалить больше, чем вы планировали, а -exec rm '{}' \; не указывает, как он относится к необычным имена файлов. – Li Lo 4 November 2010 в 03:08
  • 3
    @Oli: и {} нужно указывать так, чтобы избежать расширения оболочкой – Li Lo 4 November 2010 в 03:10
  • 4
    find лучше всего лишить каких-либо действий, кроме -print0. Он в одиночку ломает большинство принципов Unix «делайте одно, делайте это хорошо, взаимодействуйте с другими программами». (Да, я знаю, сколько устаревших скриптов зависит от -exec, поэтому я рекомендую людям притворяться , что их не существует) – msw 4 November 2010 в 07:12
  • 5
    @Li Lo: Нет, {} не нужна цитата. Попробуй. – user unknown 20 March 2011 в 03:45
find . -type f ! -name '*.ext' -size -20M -delete

легче вводить и запоминать, чем что-либо еще. Вы должны помнить, что -delete зависит от позиции и удаляет без дальнейшего уведомления и trashcan.

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

find . -type f ! -name '*.ext' -size -20M
1
ответ дан 27 July 2018 в 01:39

здесь:

find . -type f -name *.bak -size -20M -exec rm {} \;

с -name *.bak вы ищете файлы с расширением «bak», -type f ищет файлы (не каталоги), -size -20M дает вам все файлы меньше чем 20 МБ (-size +20M для обратного поиска файлов размером более 20 МБ), а с -exec вы удаляете результаты этого поиска.

1
ответ дан 31 July 2018 в 12:32
  • 1
    Вы должны указать шаблон, а также {}, чтобы предотвратить расширение оболочки. – Li Lo 4 November 2010 в 02:09
  • 2
    Нет, вам нужно только указать "*.bak", а не {}. И вместо -exec rm {} \; вы можете просто использовать -delete. И вопрос был not для удаления файлов некоторого расширения. – user unknown 20 March 2011 в 03:41

Сначала запустите

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print

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

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print0 | xargs -0 /bin/rm -f

и запустите ее. Он должен делать то, что вы хотите. Вы можете повторить ! -name '*.srt' часть больше раз, если вам нужно исключить больше файлов. Будьте осторожны, чтобы включить одинарные кавычки: они важны, чтобы предотвратить расширение оболочки с расширением.

5
ответ дан 31 July 2018 в 12:32
  • 1
    Я утверждаю, что -exec rm {} \; или -delete чище, чем трубопроводы через xargs – Oli♦ 4 November 2010 в 02:22
  • 2
    Я утверждаю, что использование -delete или -exec rm '{}' \; более подвержено ошибкам, чем использование xargs -0: -delete зависит от положения, поэтому вы можете случайно удалить больше, чем вы планировали, а -exec rm '{}' \; не указывает, как он относится к необычным имена файлов. – Li Lo 4 November 2010 в 03:08
  • 3
    @Oli: и {} нужно указывать так, чтобы избежать расширения оболочкой – Li Lo 4 November 2010 в 03:10
  • 4
    find лучше всего лишить каких-либо действий, кроме -print0. Он в одиночку ломает большинство принципов Unix «делайте одно, делайте это хорошо, взаимодействуйте с другими программами». (Да, я знаю, сколько устаревших скриптов зависит от -exec, поэтому я рекомендую людям притворяться , что их не существует) – msw 4 November 2010 в 07:12
  • 5
    @Li Lo: Нет, {} не нужна цитата. Попробуй. – user unknown 20 March 2011 в 03:45
find . -type f ! -name '*.ext' -size -20M -delete

легче вводить и запоминать, чем что-либо еще. Вы должны помнить, что -delete зависит от позиции и удаляет без дальнейшего уведомления и trashcan.

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

find . -type f ! -name '*.ext' -size -20M
1
ответ дан 31 July 2018 в 12:32

здесь:

find . -type f -name *.bak -size -20M -exec rm {} \;

с -name *.bak вы ищете файлы с расширением «bak», -type f ищет файлы (не каталоги), -size -20M дает вам все файлы меньше чем 20 МБ (-size +20M для обратного поиска файлов размером более 20 МБ), а с -exec вы удаляете результаты этого поиска.

1
ответ дан 2 August 2018 в 04:20
  • 1
    Вы должны указать шаблон, а также {}, чтобы предотвратить расширение оболочки. – Li Lo 4 November 2010 в 02:09
  • 2
    Нет, вам нужно только указать "*.bak", а не {}. И вместо -exec rm {} \; вы можете просто использовать -delete. И вопрос был not для удаления файлов некоторого расширения. – user unknown 20 March 2011 в 03:41

Сначала запустите

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print

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

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print0 | xargs -0 /bin/rm -f

и запустите ее. Он должен делать то, что вы хотите. Вы можете повторить ! -name '*.srt' часть больше раз, если вам нужно исключить больше файлов. Будьте осторожны, чтобы включить одинарные кавычки: они важны, чтобы предотвратить расширение оболочки с расширением.

5
ответ дан 2 August 2018 в 04:20
  • 1
    Я утверждаю, что -exec rm {} \; или -delete чище, чем трубопроводы через xargs – Oli♦ 4 November 2010 в 02:22
  • 2
    Я утверждаю, что использование -delete или -exec rm '{}' \; более подвержено ошибкам, чем использование xargs -0: -delete зависит от положения, поэтому вы можете случайно удалить больше, чем вы планировали, а -exec rm '{}' \; не указывает, как он относится к необычным имена файлов. – Li Lo 4 November 2010 в 03:08
  • 3
    @Oli: и {} нужно указывать так, чтобы избежать расширения оболочкой – Li Lo 4 November 2010 в 03:10
  • 4
    find лучше всего лишить каких-либо действий, кроме -print0. Он в одиночку ломает большинство принципов Unix «делайте одно, делайте это хорошо, взаимодействуйте с другими программами». (Да, я знаю, сколько устаревших скриптов зависит от -exec, поэтому я рекомендую людям притворяться , что их не существует) – msw 4 November 2010 в 07:12
  • 5
    @Li Lo: Нет, {} не нужна цитата. Попробуй. – user unknown 20 March 2011 в 03:45
find . -type f ! -name '*.ext' -size -20M -delete

легче вводить и запоминать, чем что-либо еще. Вы должны помнить, что -delete зависит от позиции и удаляет без дальнейшего уведомления и trashcan.

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

find . -type f ! -name '*.ext' -size -20M
1
ответ дан 2 August 2018 в 04:20

здесь:

  find.  -type f -name * .bak -size -20M -exec rm {} \;   

с -name * .bak вы ищете файлы с расширением «bak», -type f ищет файлы ( не каталоги), -size -20M дает вам все файлы размером менее 20 МБ ( -size + 20M для обратного поиска файлов размером более 20 МБ) и с -exec вы удаляете результаты этого поиска.

1
ответ дан 6 August 2018 в 04:24
  find.  Тип f!  -name '* .ext' -size -20M -delete  

легче вводить и запоминать, чем что-либо еще. Вы должны помнить, что -delete зависит от позиции и удаляет без дальнейшего уведомления и trashcan.

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

  find.  Тип f!  -name '* .ext' -size -20M  
1
ответ дан 6 August 2018 в 04:24

Сначала запустите

  find.  Тип f!  -name '* .sub'!  -name '* .srt' -size -20M -print  

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

  find.  Тип f!  -name '* .sub'!  -name '* .srt' -size -20M -print0 |  xargs -0 / bin / rm -f  

и запустите его. Он должен делать то, что вы хотите. Вы можете повторить ! -name '* .srt' больше, если вам нужно исключить больше файлов. Будьте внимательны, чтобы включить одинарные кавычки: они важны, чтобы предотвратить расширение оболочки.

5
ответ дан 6 August 2018 в 04:24
  find.  Тип f!  -name '* .ext' -size -20M -delete  

легче вводить и запоминать, чем что-либо еще. Вы должны помнить, что -delete зависит от позиции и удаляет без дальнейшего уведомления и trashcan.

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

  find.  Тип f!  -name '* .ext' -size -20M  
1
ответ дан 7 August 2018 в 22:31

Сначала запустите

  find.  Тип f!  -name '* .sub'!  -name '* .srt' -size -20M -print  

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

  find.  Тип f!  -name '* .sub'!  -name '* .srt' -size -20M -print0 |  xargs -0 / bin / rm -f  

и запустите его. Он должен делать то, что вы хотите. Вы можете повторить ! -name '* .srt' больше, если вам нужно исключить больше файлов. Будьте внимательны, чтобы включить одинарные кавычки: они важны, чтобы предотвратить расширение оболочки.

5
ответ дан 7 August 2018 в 22:31

здесь:

  find.  -type f -name * .bak -size -20M -exec rm {} \;   

с -name * .bak вы ищете файлы с расширением «bak», -type f ищет файлы ( не каталоги), -size -20M дает вам все файлы размером менее 20 МБ ( -size + 20M для обратного поиска файлов размером более 20 МБ) и с -exec вы удаляете результаты этого поиска.

1
ответ дан 7 August 2018 в 22:31
  find.  Тип f!  -name '* .ext' -size -20M -delete  

легче вводить и запоминать, чем что-либо еще. Вы должны помнить, что -delete зависит от позиции и удаляет без дальнейшего уведомления и trashcan.

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

  find.  Тип f!  -name '* .ext' -size -20M  
1
ответ дан 10 August 2018 в 10:39

здесь:

  find.  -type f -name * .bak -size -20M -exec rm {} \;   

с -name * .bak вы ищете файлы с расширением «bak», -type f ищет файлы ( не каталоги), -size -20M дает вам все файлы размером менее 20 МБ ( -size + 20M для обратного поиска файлов размером более 20 МБ) и с -exec вы удаляете результаты этого поиска.

1
ответ дан 10 August 2018 в 10:39

Сначала запустите

  find.  Тип f!  -name '* .sub'!  -name '* .srt' -size -20M -print  

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

  find.  Тип f!  -name '* .sub'!  -name '* .srt' -size -20M -print0 |  xargs -0 / bin / rm -f  

и запустите его. Он должен делать то, что вы хотите. Вы можете повторить ! -name '* .srt' больше, если вам нужно исключить больше файлов. Будьте внимательны, чтобы включить одинарные кавычки: они важны, чтобы предотвратить расширение оболочки.

5
ответ дан 10 August 2018 в 10:39
  find.  Тип f!  -name '* .ext' -size -20M -delete  

легче вводить и запоминать, чем что-либо еще. Вы должны помнить, что -delete зависит от позиции и удаляет без дальнейшего уведомления и trashcan.

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

  find.  Тип f!  -name '* .ext' -size -20M  
1
ответ дан 13 August 2018 в 17:11

здесь:

  find.  -type f -name * .bak -size -20M -exec rm {} \;   

с -name * .bak вы ищете файлы с расширением «bak», -type f ищет файлы ( не каталоги), -size -20M дает вам все файлы размером менее 20 МБ ( -size + 20M для обратного поиска файлов размером более 20 МБ) и с -exec вы удаляете результаты этого поиска.

1
ответ дан 13 August 2018 в 17:11
  • 1
    Вы должны указать шаблон, а также {}, чтобы предотвратить расширение оболочки. – Li Lo 4 November 2010 в 02:09
  • 2
    Нет, вам нужно только процитировать & quot ;, bak & quot; , а не {}. И вместо -exec rm {} \; вы можете просто использовать -delete . И вопрос был not для удаления файлов некоторого расширения. – user unknown 20 March 2011 в 03:41

Сначала запустите

  find.  Тип f!  -name '* .sub'!  -name '* .srt' -size -20M -print  

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

  find.  Тип f!  -name '* .sub'!  -name '* .srt' -size -20M -print0 |  xargs -0 / bin / rm -f  

и запустите его. Он должен делать то, что вы хотите. Вы можете повторить ! -name '* .srt' больше, если вам нужно исключить больше файлов. Будьте внимательны, чтобы включить одинарные кавычки: они важны, чтобы предотвратить расширение оболочки.

5
ответ дан 13 August 2018 в 17:11
  • 1
    Я утверждаю, что -exec rm {} \; или -delete чище, чем трубопровод через xargs – Oli♦ 4 November 2010 в 02:22
  • 2
    Я утверждаю, что использование -delete или -exec rm '{}' \; более подвержено ошибкам, чем использование xargs -0 : -delete зависит от положения, поэтому вы можете случайно удалить больше, чем вы планировали, и -exec rm '{}' \; не указывает, как он относится к необычным именам файлов. – Li Lo 4 November 2010 в 03:08
  • 3
    @Oli: и {} нужно указывать так, чтобы избежать расширения оболочкой – Li Lo 4 November 2010 в 03:10
  • 4
    find лучше всего лишить любого действия, кроме -print0 . Он в одиночку ломает большинство принципов Unix «делайте одно, делайте это хорошо, взаимодействуйте с другими программами». (Да, я знаю, сколько устаревших скриптов зависит от -exec , поэтому я рекомендую людям делать вид , что их не существует) – msw 4 November 2010 в 07:12
  • 5
    @Li Lo: Нет, {} не нуждается в цитате. Попробуй. – user unknown 20 March 2011 в 03:45

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

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