2011-12-19 8 views
1

タイトルは自明です。元の拡張子を維持している別のファイルの名前でシェルの名前を変更する方法を知りたいのですが。ファイルの名前を別のファイルの名前に変更し、拡張子を維持する[SHELL]

name="${2%.*}" 
ext="${1##*.}" 
filename="$name.$ext" 
mv "$1" "$filename" 

は、名前を変更したいファイルと第二として、最初の引数でそれを実行します。bashを想定

+0

をfoo.txtのために、ファイルfoobar.txtの名前を変更するのでしょうか? –

答えて

3

は、あなたがそれを行うこの方法は

file1="first file.txt" 
file2="second file.html" 

mv "$file1" "${file2%.*}.${file1##*.}" 
+0

問題は、私は先に2つのファイルの名前を知らないことです。 – Francesco

+0

@Francesco:それは問題ではありません。あなたは何らかの形で名前を変数に入れることができなければなりません。または、名前はどうやって取得していますか? – Sorpigal

+0

私はこの "* .avi"のようなものを使用します。これは変数に収めることができますか? – Francesco

0

ここではbashで書かれた簡単なスクリプトです引数には使用したい名前のファイル名を指定します。例えば。

./script foobar.txt foo.bar 

は、使用しているシェル

+0

これはスペースでファイル名に失敗します。変数の展開を引用します。 – Sorpigal

関連する問題