Підказки щодо Shell: Виявлення порожніх каталогів

Підказки щодо Shell: Виявлення порожніх каталогів

19:48, 08.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

Тут ми покажемо вам 2 варіанти використання інструкції 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. Такий параметр відповідає за роботу оболонки з шаблонами, які не мають відповідних файлів. Наприклад, скрипт з 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 47s
views 2
Поділитися

Чи була ця стаття корисною для вас?

Популярні пропозиції VPS

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

Ми використовуємо файли cookie, щоб забезпечити вам найкращий досвід роботи на нашому сайті. Якщо ви продовжуєте користуватися сайтом, не змінюючи налаштувань, вважайте, що ви згодні на отримання всіх файлів cookie на сайті HostZealot.