Используя rename
(тот от perl
иногда называемый prename
, не от util-linux
):
rename 's/(\d{2})(\d{2})(\d{2})(\d{2})/$1:$2:$3:$4/' *.avi
Это переименовало бы имя файла как custom text 00030402.avi
кому: custom text 00:03:04:02.avi
.
Если Вы обратные косые черты в имени файла (прежде чем :
), скажите:
rename 's/(\d{2})(\d{2})(\d{2})(\d{2})/$1\\:$2\\:$3\\:$4/' *.avi
Для удаления пользовательского текста из имен файлов скажите:
rename 's/.* (\d{2})(\d{2})(\d{2})(\d{2})(.*)/$1\\:$2\\:$3\\:$4$5/' *.avi
Вы можете попробовать это:
$ echo -e / --exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4
/ --exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4
$ echo !!:3-$
echo --exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4
--exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4
Здесь мы используем bash
расширение истории:
!!!!
ссылайтесь на последнюю команду 3-$
ссылайтесь на третий параметр к последнему Вы должны включить в вашем скрипте функции расширения истории bash
, которые отключены в неинтерактивной оболочке:
set -o history
set -o histexpand
Я бы добавил это в качестве комментария, за исключением того, что я не придумал, как хорошо форматировать комментарии!
В любом случае, я думаю, что вы на 90% там. Попробуйте:-
EFLAGS="--exclude=/dir1 --exclude=/dir2"
du -sh / $EFLAGS
tar cvf archive / $EFLAGS
Кавычки нужны в первой строке, так как в ней есть пробелы.
Никаких кавычек при использовании переменной, чтобы она разбивала аргументы на пробелы.
Если в именах исключенных каталогов есть пробелы, то вам нужно их экранировать.
В Бэше очень чистым способом является использование массивов:
myflags=( --exclude=/dir1 --exclude=/dir2 --exclude=/dir3/dir4 )
tar cvf archive / "${myflags[@]}"
Они могут обрабатывать пробелы и любые другие смешные символы:
myflags=( "--exclude=/a dir/with spaces" $'--exclude=/a dir/with\nnewlines' )
tar cvf archive / "${myflags[@]}"
Их тоже можно подделать, например, вы хотите исключить все подкаталоги каталога /этой-один
, которые содержат букву g
:
exclude_dirs=( /this/one/*g* )
myflags=( "${exclude_dirs[@]/#/--exclude=}" )
tar cvf archive / "${myflags[@]}"