Я хочу удалить файлы, размер которых находится между определенными значениями. Например, у меня есть следующий список файлов:
-rw-r--r-- 1 smsc sys 558 Apr 30 13:07 stats.sfe.1.20120430130513.xml.Z
-rw-r--r-- 1 smsc sys 388 Apr 30 15:32 stats.sfe.1.20120430153013.xml.Z
-rw-r--r-- 1 smsc sys 386 Apr 30 15:36 stats.sfe.1.20120430153513.xml.Z
-rw-r--r-- 1 smsc sys 389 Apr 30 15:42 stats.sfe.1.20120430154013.xml.Z
-rw-r--r-- 1 smsc sys 390 Apr 30 16:02 stats.sfe.1.20120430160013.xml.Z
-rw-r--r-- 1 smsc sys 385 Apr 30 16:12 stats.sfe.1.20120430161013.xml.Z
Из приведенного выше списка я хочу удалить только те файлы, размер которых варьируется от 386b до 390b . Я знаю, что могу использовать следующую команду для удаления файлов, размер которых превышает определенный <size>
:
find . -size +<size>-delete
Но как я могу добавить еще одну границу для файлов, размер которых меньше заданного значения?
find
условия логически AND по умолчанию, поэтому просто выберите другой-size
вариант для другой границы.Ответы:
Диапазон - это просто верхняя граница и нижняя граница. Из
find
спецификации :Поэтому все, что вам нужно сделать, это указать обе границы размера перед
-delete
действием.источник
В
-a
явномAND
операторе, который позволяет вам соединить два основных цвета. В этом случае создание диапазона с использованием-size
.find . -size +386b -a -size -390b -exec rm -f {} \;
Обратите внимание, что размер - это числовой аргумент, к которому можно добавить префикс
+
и-
. Отman 1 find
:источник
find
условия логически AND по умолчанию. Поэтому я просто добавил еще одноsize
условие, и оно работало нормально! Финальная команда выглядит так:find . -maxdepth 1 -size +358c -size -395c -delete
Всякий раз, когда
find
ожидается число, вы можете поставить+
перед ним знак, означающий больше, чем это число, или-
знак, означающий меньше, чем это число. Это строгие неравенства:+3
а-7
значит 4, 5 или 6.Для
-size
первичного вам необходимо добавить суффикс,c
чтобы указать, что число представляет собой число байтов. Вы можете объединить несколько основных цветов, чтобы взять их соединение (в некоторых версиях вы можете поместить-a
или-and
между ними). Таким образом:В zsh вы можете использовать
L
спецификатор glob . Единицей по умолчанию является байты; нравятсяfind
персонажи+
и-
указывают на строгие неравенства.(Команда выше не входит в подкаталоги; если вам это нужно, добавьте
**/
перед шаблоном.)источник
Один из способов использования
perl
:источник