-1

我想制作一个可以递归提取rar文件并将扩展名附加到提取文件的脚本。

应在此过程中添加扩展名(以便其他软件看不到可识别的文件扩展名并开始其进程,直到提取所有文件)。完成所有文件后,应删除扩展名。

这是一个示例文件结构...

/some/path/
    folder1/
        folder2/
            file1.rar
        folder3/
            file2.rar
            file3.rar
            folder4/
                file4.rar

我想让这个变成这个...

/some/path/
    folder1/
        folder2/
            file1.rar
            file1.txt.extracting
        folder3/
            file2.rar
            file2.txt.extracting
            file3.rar
            file3.txt.extracting
            folder4/
                file4.rar
                file4.txt.extracting

那么一旦一切都完成了,到这个...

/some/path/
    folder1/
        folder2/
            file1.rar
            file1.txt
        folder3/
            file2.rar
            file2.txt
            file3.rar
            file3.txt
            folder4/
                file4.rar
                file4.txt

我希望这是有道理的。这可能吗?

4

1 回答 1

0

以下应该有效:

cd $(mktemp -d)
find /some/path/ -name '*.rar' \
   -exec unrar e {} \; \
   -exec bash -c 'mv * $(dirname {})' \;
# if relevant, cd - to get back to the previous directory 

这将遍历 /some/path 及其子目录中的所有 .rar 文件,在将提取的内容复制到 .rar 文件的目录之前将它们提取到临时目录中。

在被替换后,子shell需要执行bash -c而不是直接执行。mv{}find

于 2020-01-31T09:54:12.877 回答