Предполагая bash
(вероятно), вы можете перебирать файлы в директории с командой for
, например, в следующем стенограмме:
pax> ls -al
total 4
drwxr-xr-x 5 pax ubergeeks 0 Jun 7 16:01 .
drwxr-xr-x 1 pax ubergeeks 8192 Jun 7 16:01 ..
-rw-r--r-- 1 pax ubergeeks 0 Jun 7 16:01 file 1.txt
-rw-r--r-- 1 pax ubergeeks 0 Jun 7 16:01 file 2.gpg
-rw-r--r-- 1 pax ubergeeks 0 Jun 7 16:01 file 3.xlsx
pax> for fspec in *.txt *.gpg *.xlsx ; do
...> echo "==> '$fspec'"
...> done
==> 'file 1.txt'
==> 'file 2.gpg'
==> 'file 3.xlsx'
Вы можете проверить, если переменная концы строки в определенных строках с помощью регулярного оператора выражения:
if [[ "${fspec}" =~ \.gpg$ ]] ; then
echo it ends with .gpg
fi
и, конечно же, вы можете запустить сценарий или переместить файл с командами, как:
/path/to/decrypt.sh "${fspec}
mv "${fspec}" /path/to/output
Таким образом, объединив все, что является хорошей отправной точкой будет (убедитесь, что вы задаете реальные пути, а не мои /path/to/
заполнители):
#!/usr/bin/env bash
cd /path/to/files
for fspec in *.txt *.gpg *.xlsx ; do
if [[ "${fspec}" =~ \.gpg$ ]] ; then
echo "Decrypting '${fspec}'"
/path/to/decrypt.sh "${fspec}"
else
echo "Moving '${fspec}'"
mv "${fspec}" /path/to/output
fi
done
Есть ли у вас какие-либо exampled кода, который вы пробовали это не работает так, как вам хотелось бы? Пожалуйста, разместите любые примеры и возникшее отклоняющееся поведение –