1
Bash, skrypty powłoki / Bash - skrypt pętla for, if i foldery
« dnia: 2021-06-23, 14:41:54 »
Cześć Wszystkim
Mam problem z ogarnięciem porównania nazw folderów i wykonania od[powiednich komend
W moim lunuxie jest folder /var/chroot gdzie mam 300 folderwów 4 znakowych (tylko duże litery) oraz ok 30 z nazwą 2 częściową
ABCD
ABDC
DCBA
BCDA
ACDB
nazwa_cos1
nazwa_cos2
nazwa_cos3
próbóję wykonać taki skrypt
for dir in `find /var/chroot/ -mindepth 1 -maxdepth 1 -type d`
do
if [ $dir = /var/chroot/nazwa_* ]; then
continue
#pomijam ten folder przy operacjach i przechodzę dalej
else
cd $dir
zip -r 202101.zip *.csv
rm -f *202101.csv
fi
done
skrypt ma znaleźć folder nazwa_cos i pominąć w wykonywaniu operacji, ale dla pozostałych ma wykonać polecenia. Min takie jak powyżej
problem jest w argumentach if [ $dir = /var/chroot/nazwa_* ]; then nie umie znaleźć to czego chcę i mimo wszystko wykonuje polecenia
Jak pokazać, że dla tych folderów nie ma nic wykonywać a przede wszystkim je znaleźć bo tych dwóch elementów nie umiem opanować w tym skrypcie.
próbowałęm takich ustawień if [ -d ], wstawić zmienne dir=`find /var/chroot/ -mindepth 1 -maxdepth 1 -type d` i dir1=find /var/chroot/ -mindepth 1 -maxdepth 1 -type d -name "*nazwa_*"
dla większości przypadkó mam info zbyt dużo argumentów
Proszę o instrukcję, wskazówki, pomoc jak to wykonać
Z góry dziękuję
Pozdrawiam
Bercik
Mam problem z ogarnięciem porównania nazw folderów i wykonania od[powiednich komend
W moim lunuxie jest folder /var/chroot gdzie mam 300 folderwów 4 znakowych (tylko duże litery) oraz ok 30 z nazwą 2 częściową
ABCD
ABDC
DCBA
BCDA
ACDB
nazwa_cos1
nazwa_cos2
nazwa_cos3
próbóję wykonać taki skrypt
for dir in `find /var/chroot/ -mindepth 1 -maxdepth 1 -type d`
do
if [ $dir = /var/chroot/nazwa_* ]; then
continue
#pomijam ten folder przy operacjach i przechodzę dalej
else
cd $dir
zip -r 202101.zip *.csv
rm -f *202101.csv
fi
done
skrypt ma znaleźć folder nazwa_cos i pominąć w wykonywaniu operacji, ale dla pozostałych ma wykonać polecenia. Min takie jak powyżej
problem jest w argumentach if [ $dir = /var/chroot/nazwa_* ]; then nie umie znaleźć to czego chcę i mimo wszystko wykonuje polecenia
Jak pokazać, że dla tych folderów nie ma nic wykonywać a przede wszystkim je znaleźć bo tych dwóch elementów nie umiem opanować w tym skrypcie.
próbowałęm takich ustawień if [ -d ], wstawić zmienne dir=`find /var/chroot/ -mindepth 1 -maxdepth 1 -type d` i dir1=find /var/chroot/ -mindepth 1 -maxdepth 1 -type d -name "*nazwa_*"
dla większości przypadkó mam info zbyt dużo argumentów
Proszę o instrukcję, wskazówki, pomoc jak to wykonać
Z góry dziękuję
Pozdrawiam
Bercik