INIT_
в качестве конечной части имени файла.
(foo.INIT_
будет переименован в foo.FINAL_
, по REGEXP парадигме '$
' является концом строки '^
' началом и т.д. ... )\I
приводит к неизвестному переключателю для переименованияпопробуйте
rename -n s/INIT_/FINAL_/ $(find . -print )
для предварительного просмотра.
где
-n
флаг для предварительного просмотра$(find . -print )
пойдет вниз по каталогу (от локального dir), LHS(*) rename будет фильтровать имя.
rename s/INIT_/FINAL_/ $(find . -print )
кавычки не нужны, если нет смешного имени.
(*) означает "левая сторона".
-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
Спасибо за редактирование.
Похоже, вы используете переменные оболочки и подстановку команд, чтобы указать имя файла и каталог, который вы хотите заархивировать.
Это сделает то, что вам нужно:
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
.