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

watch 47s
views 2

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-системах. Сподіваємося, що наші інструкції будуть вам корисними!

Поділитися

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

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

-15.6%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
30 Mbps
DDoS Protected SSD-KVM 1024 Linux

38

При оплаті за рік

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 8192 Linux

25.85

При оплаті за рік

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
200 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 8192 Linux

25.25

При оплаті за рік

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 16384 Linux

39.94

При оплаті за рік

-8.9%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 16384 Windows

56

При оплаті за рік

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 16384 Linux

50

При оплаті за рік

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 2048 Linux

7.7

При оплаті за рік

-10%

CPU
CPU
10 Epyc Cores
RAM
RAM
64GB
Space
Space
400 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 65536
OS
CentOS
Software
Software
Keitaro

149.04

При оплаті за рік

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 4096 Windows

18.1

При оплаті за рік

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
200 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 8192 Linux

20.42

При оплаті за рік

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

cookie

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

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