2012-09-26 35 views
3

我想寫一個腳本,我有一個目錄中的多個文件,但我想爲每個文件創建一個具有特定擴展名的目錄(沒有目錄名稱中的文件擴展名)並將每個文件移動到他們自己的目錄中,然後對其各自目錄中的每個文件執行一些操作。 我真的很新,所以這是我得到的,它不起作用,所以任何幫助,將不勝感激!移動每個文件到自己的目錄

for file in *; 
    do 
     if [ $file=[$.sff]] ; then 
      mkdir ${$file/.sff/""/} 
      mv $file ${file/.sff/""/}/ 
      fi 
     for $file in $file/ 
       do { ...... 
      } 
done 
+0

$ {}有一些特殊的語法,應該看它 - 即時通訊相當肯定它不接受'「」'爲空字符串,只是離開它。或者你可以使用'$(echo $ file | sed's/\。sff //')'' – mschr

回答

2

您不想要if語句或case語句。只要做到:

die() { echo "$*" >&2; exit 1; } 
for file in *; do 
    dir=${file%.*} 
    test -d $dir || mkdir $dir # or just mkdir -p $dir 
    test -f $dir && die "$dir exists and is a file!" 
    mv $file $dir 
done 
for dir in *; do ...; done # Do something in each directory 
0
for file in *.* 
do 
    dir=${file%.*} 
    mkdir "$dir" 
    newfile=$dir/$file 
    mv "$file" "$newfile" 
    ... do something with "$newfile" 
done 
相關問題