我有几百个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并只使用文件名。
答案 0 :(得分:4)
答案 1 :(得分:0)
dir=$(echo ${i[@]::-4})
${name[@]:pos:len})
获取字符串/数组的子字符串/子数组,对于字符串,[@]
可以避免。
dir=$(echo ${i::-4})
答案 2 :(得分:0)
您可以使用普通的bash shell参数展开https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
FILE = “TEST.rar”
echo“$ {FILE %%。*}” - > TEST