2016-05-03 2 views
-1

Я пытаюсь написать сценарий Unix для создания каталогов на основе имен файлов и перемещения этих файлов в указанные каталоги.Unix Создать каталоги на основе имени файла и переместить файлы в каталоги

модель

файла: * ОБЫЧНАЯ * пп .pdf (например 4520009455604706_PLAIN_12 .pdf)

Каталоги будут созданы: Cy пп (например Cy) [Примечание : Необходимо проверить, существует ли каталог, если нет, а затем создать новый каталог]

После создания вышеуказанных каталогов мне нужно переместить все файлы ching * PLAIN * .pdf к каталогу/Cy21.

[EDITED] Решение добавлено ниже.

+0

Сценарий вы вывесили прекрасно работает на моем окне. Ошибка подразумевает, что код, который вы разместили здесь, отличается от того, что вы пытались запустить. Вы уверены, что это тот же код? –

+0

Да, я даже пробовал простой цикл, но все равно получаю ту же ошибку. Я использую оболочку ksh для выполнения скрипта с помощью этой команды: 'sh test.sh'. – Bally

+0

sh и ksh - это не одно и то же. Вы уверены, что/bin/sh is ksh? –

ответ

0

Мое решение так:

#!/bin/sh 
for file in *.pdf 
do 
    if test -s $file 
    then 
    cycle=`echo $file | awk -F'.' '{print $1}' | awk '{print substr($0,(length($0)-1))}'` 
dir="./Cy"$cycle 
if [ -d $dir ] 
then 
    mv $file ./Cy$cycle 
else 
    mkdir $dir 
    mv $file $dir 
fi 
    else 
     echo "File error" 
     echo $file 
    fi 
done 
+1

[shellcheck] (http://www.shellcheck.net/) - ваш друг :) – jDo

+1

@jDo Спасибо за ссылку. :) – Bally

Смежные вопросы