2016-05-03 129 views
-1

我正在嘗試編寫一個基於文件名創建目錄的Unix腳本,並將這些文件移動到指定的目錄。Unix基於文件名創建目錄並將文件移動到目錄

文件模式: * PLAIN * .PDF(例如4520009455604706_PLAIN_12 .PDF)被創建

目錄:CY (例如賽揚) [ :需要一個步驟來檢查目錄是否存在,如果不存在,則創建新目錄]

創建上述目錄後,我需要將所有文件ching * PLAIN * .pdf到目錄/ Cy21。

[編輯]下面添加解決方案。

+0

腳本您發佈工作正常在我的箱子。錯誤意味着你在這裏發佈的代碼與你試圖運行的代碼不一樣。你確定它是相同的代碼嗎? –

+0

是的,我甚至嘗試了一個簡單的循環,但仍然得到相同的錯誤。我使用ksh shell來執行這個腳本:'sh test.sh'。 – Bally

+0

sh和ksh不是一回事。你確定/ bin/sh是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

相關問題