2017-08-18 26 views
0

私は多くの.rarフォルダを特定のディレクトリに持っています。それぞれのrarフォルダの内容を同じディレクトリに抽出し、rarフォルダのすべての抽出されたファイルを、rarというフォルダ名と同じ名前の新しいフォルダに配置する必要があります。例えば同じフォルダ名にrarファイルを抽出

2つのrarのファイルがある場合、:onetwoone.rartwo.rarは、スクリプトは同じ名前の2つのフォルダを作成する必要があります。 oneという名前のフォルダには、から抽出されたファイルが含まれ、twoという名前のフォルダには、two.rarから抽出されたファイルが含まれている必要があります。

コマンド:unrar e $ filenameは、rarファイルのすべての内容を抽出しますが、宛先フォルダは作成しません。

unrar e $filename $DESTINATION_PATHを使用すると、rar個のファイルが多数ある可能性があるため、手動で作成先のパスにフォルダ名を作成するには時間がかかります。シェルスクリプトでこれをどのように達成できますか?

これまでのところ、私が書かれているだけで、これらの行:私はrar名前のと同じフォルダ名を作成する方法を知っていると、新たに作成したフォルダにそのrarのすべてのファイルを抽出しません

loc="/home/Desktop/code"` # this directory path contains all the rar files to be extracted <br/> 

for file in "$loc"/* 
do    
unrar e $file 
done 

同じ名前。

ご協力いただければ幸いです。前もって感謝します !!

答えて

0

sedを使用すると、アーカイブからファイル拡張子を削除できます。対応する名前にdestinationを設定する次のスクリプトを見てください。

#!/bin/sh 

for archive in "$(find $loc -name '*.rar')"; do 
    destination="$(echo $archive | sed -e 's/.rar//')" 
    if [ ! -d "$destination" ] ; then mkdir "$destination"; fi 
    unrar e "$archive" "$destination" 
done 

あなたがbashを使用している場合は、簡単に使用することができます

#!/bin/bash 

for archive in "$(find $loc -name '*.rar')"; do 
    destination="${archive%.rar}" 
    if [ ! -d "$destination" ] ; then mkdir "$destination"; fi 
    unrar e "$archive" "$destination" 
done 
関連する問題