查找文件并执行命令

Lin*_*xon 11 linux bash

我有很多rar档案在单个文件夹中构建,并希望脚本解压缩它们.

我无法弄清楚它应该如何完成并需要一些帮助.

#!/bin/bash
## For all inodes
for i in pwd; do
    ## If it's a directory
    if [ -d "$i" ] then
        cd $i

        ## Find ".rar" file
        for [f in *.rar]; do
            ./bin/unrar x "$f" # Run unrar command on filename
            cd ..
        done
    done
done
Run Code Online (Sandbox Code Playgroud)

我不熟悉bash脚本,我认为代码错误不止一次.但我想这应该是基本结构

hek*_*mgl 19

您可以使用以下find命令:

find -name '*.rar' -exec unrar x {} \;
Run Code Online (Sandbox Code Playgroud)

find提供exec将在找到的每个文件上执行该命令的选项.


jhe*_*ran 7

您不需要脚本.

find . -name "*.rar" -exec unrar x {} \;
Run Code Online (Sandbox Code Playgroud)

此外,您可以将find的结果传递给unrar命令.

find . -name "*.rar" | xargs unrar x
Run Code Online (Sandbox Code Playgroud)