Tar игнорирует параметр --directory

  1. это переименование заменит INIT_ в качестве конечной части имени файла. (foo.INIT_ будет переименован в foo.FINAL_, по REGEXP парадигме '$' является концом строки '^' началом и т.д. ... )
  2. \I приводит к неизвестному переключателю для переименования

попробуйте

 rename -n s/INIT_/FINAL_/ $(find . -print )

для предварительного просмотра.
где

  • -n флаг для предварительного просмотра
  • $(find . -print ) пойдет вниз по каталогу (от локального dir), LHS(*) rename будет фильтровать имя.

    rename s/INIT_/FINAL_/ $(find . -print )

кавычки не нужны, если нет смешного имени.

(*) означает "левая сторона".

0
14.06.2018, 05:03
2 ответа

-Cне влияет на то, где создается архив. Это влияет только на то, какие файлы добавляются в архив. Так, например, заданный tar cvf foo.tar a -C /b c -C /d e, tarдобавит aиз текущего каталога, переключится на /bи добавит c, переключится на /dи добавит e. Сам foo.tarбудет создан в текущем каталоге (, где aбыл ).

Если в командной строке не заданы файлы для добавления, но используется -C /some/dir, то tarпереключится на /some/dirи добавит в архив все, что в нем есть.

(Соответственно, при извлечении-Cне влияет на то, где tarищет файл архива. Это влияет только на то, куда попадают извлеченные файлы.)

Таким образом,:tar czf Pictures_$CREATION_TIMESTAMP.tar.gz -C /home/$USER Picturesиз /home/$USER/coding/python_code/всегда будет создавать архив в /home/$USER/coding/python_code/с каталогом Picturesиз /home/$USER.

Если вам нужен каталог Picturesиз /home/$USERв архиве, созданном в /home/$USER, вам нужно либо с cdна /home/$USER, либо создать архив:

cd "/home/$USER"; tar czf "Pictures_$CREATION_TIMESTAMP.tar.gz" Pictures

Или укажите путь к архиву:

tar czf "/home/$USER/Pictures_$CREATION_TIMESTAMP.tar.gz" -C "/home/$USER" Pictures
3
28.01.2020, 02:23

Спасибо за редактирование.

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

Это сделает то, что вам нужно:

tar czfv $HOME'/Pictures_'$CREATION_TIMESTAMP'.tar.gz' "$DEST" -C Pictures

Я добавил v, чтобы сделать его подробным, чтобы вы могли видеть, что происходит. Переменная $HOME, очевидно, расширяется до вашего домашнего каталога, и я полагаю, что $CREATION _TIMESTAMP является переменной для времени. Вы заявили, что $DESTуказывает путь к каталогу, который вы пытаетесь заархивировать, поэтому он находится в конце, где он обычно находится. Я помещаю двойные кавычки вокруг $DESTна случай, если путь содержит пробелы, но если это не так, вы можете удалить их. Если $CREATION _TIMESTAMP равно тому, что у вас есть выше $(date +%F_%H%M%S), тогда в нем не будет пробелов, поэтому двойные кавычки не нужны. -Cудаляет вложенность, так что сжимается только Pictures.

0
28.01.2020, 02:23

Теги

Похожие вопросы