Проверьте, превышает ли размер файла 1 МБ, используя условие IF

Вместо этого вы можете попробовать использовать x2go . Он использует ту же технологию (, но несовместим с FreeNX ).

0
25.10.2019, 20:02
2 ответа

Если вы хотите запросить по одному файлу за раз, statявляется инструментом общего назначения -для запроса различных атрибутов конкретного файла, включая размер среди многих других.

FileName="foo"
FSize=1048576
if [ $(stat -f %z "$FileName") -gt $FSize ]; then
    printf "File %s is larger than %d bytes.\n" "$FileName" $FSize
fi

Если то, что вы действительно ищете, — это способ запроса большого количества файлов и извлечения имен только тех файлов, которые превышают определенный размер, тогда findможет быть тем, что вам нужно.

Учитывая группу файлов, расположенных в DIRECTORY, будут найдены те файлы, размер которых превышает байты FSize:

DIRECTORY="/path/to/your/files"
FSize="1M"
find $DIRECTORY -type f -size +$FSize
1
28.01.2020, 02:29

Использование findдля определенного файла в$filepath:

if [ -n "$(find "$filepath" -prune -size +1000000c)" ]; then
    printf '%s is strictly larger than 1 MB\n' "$filepath"
fi

Это использует findдля запроса размера конкретного файла в $filepath. Если размер превышает 1000000 байт, findнапечатает путь к файлу, в противном случае ничего не будет сгенерировано. Тест -nверен, если длина строки не равна -нулевой, что в данном случае означает, что findчто-то вывело, что, в свою очередь, означает, что файл больше 1 МБ.

Вы об этом не спрашивали :Поиск всех обычных файлов размером более 1 МБ под некоторым $dirpathи печать короткого сообщения для каждого:

find "$dirpath" -type f -size +1000000c \
    -exec printf '%s is larger than 1 MB\n' {} +

Эти фрагменты кода должны быть переносимы на любой Unix.


Также обратите внимание, что использование <или >в тесте проверяет, сортируются ли две вовлеченные строки определенным образом лексикографически. Эти операторы не выполняют числовое сравнение. Для этого используйте-lt("меньше" ),-le("меньше или равно" ),-gt("больше" )или-ge("больше или равно" "),-eq("равно" )или-ne("не равно" ).Эти операторы выполняют целочисленное сравнение.

9
28.01.2020, 02:29

Теги

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