1

我在 Ubuntu 服务器 18.04 上。

我的主要目标是从父目录运行脚本,该脚本将父目录的所有子目录中的所有文件解压缩。我也安装apt install unrar了它,它位于“/usr/bin/unrar”。这是我到现在为止的想法。但它似乎不起作用:

for dir in 'pwd/*/'
do
  dir=${dir%*/} 
  cd dir
    for file in dir/*/
  do
    "/usr/bin/unrar" x dir/*.r* dir/
done

我在这里找到了一个使用 7zip 的 Windows 工作脚本

4

3 回答 3

0

如果您只想解压缩找到目录中的每个 rar 文件,find可以直接执行此操作。这需要一些时间来适应,但非常值得学习。

find . -name '*.rar' -execdir unrar {} \;

简而言之,说要在找到它的目录中的每个找到的文件上-execdir运行这些东西;占位符被替换为文件名\;{}

于 2020-07-29T18:04:17.287 回答
0
find . -name '*.rar' -execdir unrar {} \;

这对我不起作用。

我把它改成了这个,它起作用了。

find . -name '*.rar' -execdir unrar e -r {} \;
于 2021-12-19T19:25:24.753 回答
0

这是一个开始的例子;根据需要调整模式和回声语句:

#!/bin/bash

pattern='*/*.rar'
archives=($pattern)

if [[ "${archives[@]}" == "$pattern" ]]; then
    echo NONE 1>&2
    exit
fi

for rpath in "${archives[@]}"; do
    dir=${rpath%/*}
    rar=${rpath##*/}
    pushd "$dir" > /dev/null
    echo -e "\ndir: $dir"
    echo unrar args "$rar"
    popd > /dev/null
done
于 2020-07-28T21:57:36.617 回答