2015-06-22 4 views
0

Будет каталог, который будет содержать различные типы файлов (xlsx, gpg, txt).Нужна помощь для перемещения файлов из одного каталога в другой с помощью сценария оболочки

Если .gpg, то вызывается только decrypt.sh или перемещает файл в папку вывода.

Любой, кто мог бы мне помочь?

+0

Есть ли у вас какие-либо exampled кода, который вы пробовали это не работает так, как вам хотелось бы? Пожалуйста, разместите любые примеры и возникшее отклоняющееся поведение –

ответ

0

Предполагая 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 
Смежные вопросы