1

数百のrarファイルがあります。rar ファイルごとにディレクトリを作成し、ファイルを新しく作成したディレクトリに移動したいと思います。

これは、rar を作成するために使用しているコードです。

#!bin/bash
for f in *; do 
rar a -s -m5 "${f%.*}.rar" "$f";
done

これは、ファイルを移動するために使用しているコードです。

#!/bin/bash
for i in *.rar; do
dir=$(echo "$i" | \
sed 's/\(.\)\([^ ]\+\) \([^ ]\+\) - \(.*\)\.pdf/\1\/\1\2 \3/')
dir="DestinationDirectory/$dir"
mkdir -p -- "$dir" && mv -uv "$i" "$dir/$i"
done

問題は、拡張子名でディレクトリを作成することです。

ie: file irclog3_26_198.rar is moved into folder /DestinationDirectory/irclog3_26_1988.rar/irclog3_26_1988.rar

.rar を無視してフォルダを作成し、ファイルの名前だけを使用したいと思います。

4

3 に答える 3

4

どうですか:

dir="${dir%.rar}"
mkdir -p -- "$dir" ...

腹筋でそれについてもっと読んでください。

于 2012-07-28T14:48:07.490 に答える
0
dir=$(echo ${i[@]::-4})

${name[@]:pos:len})文字列の場合、文字列/配列の部分文字列/部分配列を取得します[@]。回避できます。

dir=$(echo ${i::-4})
于 2012-07-28T14:57:27.540 に答える
0

通常の bash シェル パラメータ expension を使用できますhttps://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html

FILE="TEST.rar"

echo "${FILE%%.*}"

--> テスト

于 2012-07-28T15:00:08.950 に答える