Советы по работе с Shell: Обнаружение пустых каталогов
14:03, 01.05.2024
Основные аспекты
Администрирование системы Linux - задача не из простых, и для ее эффективного выполнения необходимо знать команды и понимать основные аспекты процессов. Например, важно знать, пуста ли директория, прежде чем приступать к выполнению каких-либо важных операций.
Основываясь на нашем практическом опыте в этой области, мы можем дать вам несколько инструкций, которые помогут определить пустой каталог. Здесь вы получите практические рекомендации, которые можно использовать в shell-скрипте и оболочке.
1. Использование команды find
Как правило, команда find используется для поиска по определенному шаблону, когда речь идет о каталогах и файлах. В этой части мы расскажем, как эту команду можно использовать по-другому, в частности, для проверки, пуста ли директория.
1.1. Параметр -empty
В соответствии со стандартными характеристиками этой команды, опция -empty проверяет каталоги и файлы. Чтобы что-то изменить и выбрать только каталоги, используйте следующее:
$ find . -type d -empty
В этой строке -empty используется для указания, что поиск ведется только для пустого файла или каталога, а с помощью -type d мы указываем, что поиск ведется только для каталогов. В этой строке будут указаны пути к найденным каталогам, которые должны быть пустыми.
1.2. Команда с оператором if
Здесь мы покажем вам два варианта использования оператора if вместе с командой test. Первый подход подсчитывает файлы в определенной директории и выглядит следующим образом:
if [ "$(find projects -mindepth 1 -maxdepth 1 | wc -l)" -eq 0 ]; then
echo "Empty Directory"
else
echo "Directory isn’t empty"
fi
В этом сценарии -eq 0 работает, сравнивая, равно ли количество элементов нулю, wc -l подсчитывает элементы в каталоге. -mindepth 1 - эта часть гарантирует, что в поиске find не будет каталога, а -maxdepth 1 - означает, что поиск каталогов/файлов будет производиться в определенном каталоге.
Другой вариант выглядит следующим образом:
if [ -z "$(find projects -mindepth 1 -maxdepth 1)" ]; then
echo "Empty Directory"
else
echo "Directory isn’t empty"
fi
В этом скрипте параметр -z означает true в случае пустого вывода. Это означает, что если проект действительно пуст, то вы получите уведомление с фазой " Empty Directory".
2. Применение команды ls
Пожалуй, самым простым способом проверки каталога является использование команды ls. Вам не нужно будет создавать никаких сложных скриптов, просто используйте следующую строку:
$ ls projects
В выводе этой строки будут показаны только те каталоги, которые содержат какую-либо информацию, остальные, которые не будут показаны, будут пустыми.
2.1. Применение команды test с оператором if
Чтобы просмотреть содержимое каталога, необходимо использовать ls вместе с другой опцией, например, так:
$ if [ -z "$(ls -A projects)" ]; then echo "Empty Directory "; else echo "Directory isn’t empty"; fi
В этой строке A projects, объединенный с ls, используется для отображения содержимого всех каталогов, кроме текущего и родительского.
Кроме того, можно подсчитать количество элементов:
$ if [ "$(ls -A projects | wc -l)" -eq 0 ]; then echo "Empty Directory"; else echo "Directory isn’t empty"; fi
3. Опция Shopt
Shopt - это команда, которая позволяет снимать и устанавливать опции оболочки. С помощью аргумента -s можно установить nullglob. Такая опция отвечает за то, как shell работает с шаблонами, не имеющими совпадающих файлов. Например, скрипт с nullglob, не имеющий подходящего файла, расширяется до пустого списка, в то время как без него шаблон представляет собой просто литеральную строку.
# Path of directory
directory_path="/home/samuel/Desktop/projects"
# Enable the nullglob
shopt -s nullglob
# Whether is it an empty directory?
files=( "$directory_path"/* )
if [ ${#files[@]} -eq 0 ]; then
echo "Empty Directory"
else
echo "Directory isn’t empty"
fi
Используя этот сценарий Bash, вы получите вывод “Empty Directory” в случае, если он пуст или содержит только скрытые типы файлов.
4. В заключение
Мы решили поделиться своим практическим опытом и рассмотреть различные подходы, которые можно использовать для определения того, пуст каталог или нет. Основными подходами являются использование команд ls и find.
Рассмотрев все доступные варианты, вы сможете выбрать, что лучше подойдет для вашего конкретного случая, исходя из требований и производительности. Простое понимание упомянутых приемов работы со скриптами и командами оболочки поможет эффективно управлять каталогами в системах Linux. Надеемся, что наши инструкции окажутся полезными для вас!