Советы по работе с Shell: Обнаружение пустых каталогов

Советы по работе с Shell: Обнаружение пустых каталогов

14:03, 01.05.2024

Содержание статьи
arrow

  • Основные аспекты
  • 1. Использование команды find
  • 1.1. Параметр -empty
  • 1.2. Команда с оператором if
  • 2. Применение команды ls
  • 2.1. Применение команды test с оператором if
  • 3. Опция Shopt
  • 4. В заключение

Основные аспекты

Администрирование системы 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. Надеемся, что наши инструкции окажутся полезными для вас!

views 51s
views 2
Поделиться

Была ли эта статья полезной для вас?

Популярные предложения VPS

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.