2011-07-27 3 views
0

ファイルごとに名前が付けられたディレクトリに、特定の拡張子とXMLを持つファイルをラップアップするスクリプトが必要です。さらに、ディレクトリ名をfilename + .itmspに変更する必要があります。現時点では、スクリプトはファイル名に基づいてディレクトリを作成しますが、ディレクトリ名に.itmspを追加する方法がわかりません。Bashはファイル名に基づいてディレクトリを作成し、.itmspを追加します

#!/bin/bash 
path='/Volumes/Drive/TEST'  
cd $path 

for FILE in `ls | egrep "xml|mov|mpeg|mpg"` 
do 
    DIR=`echo $FILE | cut -d '.' -f 1` 
    mkdir -p $DIR 
    mv $FILE $DIR 
done 
+0

明確にするために、あなたは 'foo.itmsp'という名前のディレクトリを作成したいfoo.mov''という名前のファイルがある場合は?後で 'foo.mov'を' foo.itmsp/'に移動しますか? –

+0

私は、ビデオファイルに応じてfoo.xmlとfoo.mov/mpg/mpegという2つのファイル1と1を持っています。これらの2つのファイルをfoo.itmspというディレクトリに移動したいとします。 – JRM

答えて

4

これはbashのですので:

cd /Volumes/Drive/TEST 
for FILE in *.{xml,mov,mpeg,mpg} 
do 
    # remove the last dot and subsequent chars, then add new ext 
    DIR="${FILE%.*}.itmsp" 
    mkdir -p "$DIR" 
    mv "$FILE" "$DIR" 
done 
+0

これは機能し、カットオプションよりもはるかに良いです - ありがとうございます。ほんの少しのことは、空の* .itmspという追加のディレクトリを作成するということですが、削除することができます。 – JRM

+0

私はそれが起こると思う唯一の方法は '*。{xml、mov、mpeg、mpg}'パターンファイルが一致しなかったので、シェルオプション 'nullglob'がオンになっています。 –

0

「$ DIR.itmsp」のように$ DIRに.itmspを追加するだけです。

+0

ディレクトリに.itmspが追加されています。しかし、ファイルがないと、ディレクトリの外にあるファイルの拡張子が外されます。 – JRM

関連する問題