Підказки щодо Shell: Виявлення порожніх каталогів
Ключові аспекти
Адміністрування системи 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-системах. Сподіваємося, що наші інструкції будуть вам корисними!