我在 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
我在 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
如果您只想解压缩找到目录中的每个 rar 文件,find
可以直接执行此操作。这需要一些时间来适应,但非常值得学习。
find . -name '*.rar' -execdir unrar {} \;
简而言之,说要在找到它的目录中的每个找到的文件上-execdir
运行这些东西;占位符被替换为文件名\;
。{}
find . -name '*.rar' -execdir unrar {} \;
这对我不起作用。
我把它改成了这个,它起作用了。
find . -name '*.rar' -execdir unrar e -r {} \;
这是一个开始的例子;根据需要调整模式和回声语句:
#!/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