Підказки щодо 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
2 Xeon Cores
RAM
RAM
512 MB
Space
Space
10 GB SSD
Bandwidth
Bandwidth
1 TB
KVM-SSD 512 Metered Linux

5.33

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

-13.1%

CPU
CPU
2 Xeon Cores
RAM
RAM
512 MB
Space
Space
10 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 512 HK Linux

7

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

-8.1%

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

31.9

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

-7.3%

CPU
CPU
3 Epyc Cores
RAM
RAM
2 GB
Space
Space
25 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 2048 Windows

22

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

-10%

CPU
CPU
10 Xeon Cores
RAM
RAM
64 GB
Space
Space
300 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 65536 Linux

181.5

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

-9.5%

CPU
CPU
4 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 8192 Windows

121.5

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

-10%

CPU
CPU
8 Xeon Cores
RAM
RAM
32 GB
Space
Space
200 GB SSD
Bandwidth
Bandwidth
12 TB
KVM-SSD 32768 Metered Linux

150

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

-16.3%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
40 Mbps
DDoS Protected SSD-KVM 2048 Linux

48

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

-18.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
2 TB
wKVM-SSD 2048 Metered Windows

24

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

-10%

CPU
CPU
2 Xeon Cores
RAM
RAM
512 MB
Space
Space
10 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 512 Linux

5.2

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

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

cookie

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

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