Извлечь рекурсивно и добавить расширение? - PullRequest
0 голосов
/ 31 января 2020

Я хочу создать скрипт, который может рекурсивно извлекать 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

Надеюсь, это имеет смысл. Это возможно?

1 Ответ

0 голосов
/ 31 января 2020

Должно работать следующее:

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 

Это будет перебирать все файлы .rar в / some / path и его дочерних каталогах, извлекая их во временный каталог перед копированием извлеченного содержимого в. каталог файла rar.

Выполнение bash -c вместо mv напрямую требуется для интерпретации подоболочки после замены {} на find.

...