2017-09-17 12 views
0

拡張子が異なる複数のファイル(pdf、doc、txt ...など)を含むディレクトリがあります。Linux - 拡張子を維持しながらファイル名を変更

ファイル名の拡張子を同じにして、ディレクトリ名に従ってすべてのファイルの名前を変更しようとしています。以下のコードはすべてのファイルがPDFの場合は正常に動作しますが、それ以外の場合はpdfへのtxtファイルの拡張も変更されます。

mv "$file" "${dir}/${dir}-${count}.pdf" 

おかげで、ファイルの拡張子を維持しながら

は、どのように私は、ファイルの名前を変更することができます。

答えて

0

これはbashで行うことができます。

詳細をお知らせください。この$ dirと$ count変数の値を決める方法。

あなたはすでにあなたが

OLD NAME以下のようにファイル名を変更したいのかによって知っていれば|パス

test.1 | | newtest.1 |パス

arty.2新しい名前を| xyz.2 |パス

特定の名前で置き換えたい場合は、上記のようなリストを作成してからwhileまたはforループでファイルをトラバースすることができます。以下、その後のスニペットが動作するの下に単一のディレクトリの下の操作を実行したい場合は、複数のディレクトリ

while IFS="|" read OLD NEW PATH 
do 
    cd $Path 

    filename=`echo $NEW|awk -F '.' '{print $1}'` 

    filetype=`echo $NEW|awk -F '.' '{print $2}'` 

    mv $OLD $filename.$filetype 

done<FILE_PATH 

下のファイルを持っている場合のために、簡単なbashのスニペットです。

for i in $(ls /tmp/temp) 
do 
    filename=`echo $i|awk -F "." '{print $1}'` 
    fileType=`echo $i|awk -F "." '{print $2}'` 
    mv $i $filename.$fileType 
done 
0

私はこれを何らかのループでやっていると思いますか?もしそうなら、あなたは

ext="${file##*.}" # eg. ext="txt", ext="pdf"... 

で最初のファイルの拡張子を取得し、あなたのmvコマンドで$extpdfを置き換えることができます。 sh,bash,dash,kshで試験した。

関連する問題