有时我会从互联网上下载种子,没有非法内容,只是种子。
完成的 torrent 是一个目录,包含:
file.rar
还有file.rar
“块”
file.r00
file.r01
file.r02
file.r03
file.r04
file.r05
file.r06
file.r07
file.r08
file.r09
file.r10
file.r11
file.r12
file.r13
file.r14
file.r15
file.r16
file.r17
file.r18
file.r19
file.r20
file.r21
file.r22
file.r23
file.r24
file.r25
file.r26
file.r27
file.r28
file.r29
file.r30
file.r31
file.r32
file.r33
file.r34
file.r35
file.r36
file.r37
file.r38
file.r39
file.r40
file.r41
file.r42
file.r43
file.r44
file.r45
file.r46
file.r47
file.r48
file.r49
.... 等等
当我解压 rar 时file.rar
,它会提取file.iso
。完成此过程后,我不再需要file.rar
和file.r[00..49]
。有时会有数百个 rar 块,它是动态的。
一个例子:
在我的主目录中~
,我有一个Downloads
文件夹,其中存储了我下载的种子。
我使用 cd 进入该Downloads
文件夹。
$ cd Downloads/
文件夹中Downloads
有多个下载的种子,均具有动态范围的“块”。
Downloads ls
Ubuntu/
Pop_Os/
Mint/
Kodachi/
从Downloads
文件夹中,我想运行一个命令来提取子文件夹中的所有 rar 文件,在本例中为:Ubuntu、Pop_Os、Mint 和 Kodachi。并在同一过程中删除*.rar
。提取子文件夹“ubuntu”中的 ,提取子文件夹“Pop_Os”中的*.r[00..**]
,依此类推。ubuntu.iso
pop_os.iso
下个月的下载文件夹可能包含:
Parrot_OS/
Manjaro/
Arch/
我不想在执行的命令中更改任何内容~/Downloads
。
希望这能解答我在评论中收到的一些疑问。
答案1
使用while
循环可能比以下方法更简单-exec
:
find . -type f -name '*.rar' -print0 |
while IFS= read -r -d '' file; do
dir=$(dirname "$file")
rar=$(basename "$file")
cd "$dir"
unrar e "$rar" && rm "$rar"
cd -
done
答案2
解压:
非免费 UNRAR 兼容概要 unrar-free [elvx] [-ep] [-o+] [-o-] [-ppassword] [-u] [--] 档案 [文件 ...] [目标]
This syntax should only be used in front-end programs which are using
non-free unrar as a back-end. It is recommended to use this program by
GNU command line syntax.
e Extract files from archive without full path.
l List files in archive.
v Verbose list files in archive.
X :使用完整路径从存档中提取文件。
答案3
将提取.rar
到其原始文件夹,而不是pwd
cd FOLDER_WITH_RAR
find . -type f -name '*.rar' -print0 |
while IFS= read -r -d '' file; do
dir=$(dirname "$file")
rar=$(basename "$file")
cd "$dir"
echo "file=$file, dir=$dir, rar=$rar"
unrar x "$rar"
# rm -f "$rar"
cd -
done