Возможно ли создать сжатый архив папки из другой директории?

С помощью zsh вы можете сделать что-то вроде

# get current date (YYMM) in a variable 
crd=$(date "+%y%m")
# use a function to extract the 13 chars that make up the timestamp
dtts() REPLY=${${REPLY%%.*}: -13}
# sort file names by the timestamp in descending order, exclude the ones with the
# same YYMM as the current date and set the remaining file names as arguments
set -- *(.O+dtts^e_'[[ "${${REPLY%%.*}: -13:4}" == "$crd" ]]'_)
# remove the first item from the list (i.e. the last one before current month)
shift
# print the remaining file names
print -rl -- "$@"

Здесь используется расширение параметров и квалификаторы глобуса :
он сначала выбирает обычные файлы (.) В порядке убывания ( O ) по метке времени с помощью функции dtts , затем инвертированной e ] string ^ e _ '[["$ {$ {REPLY %%. *}: -13: 4}" == "$ crd"]]' _ отменяет выбор файлов, если метка времени совпадает с текущим годом и месяц (т.е. если выражение внутри кавычек вернет истину); shift затем удаляет первый элемент из списка (поскольку имена были отсортированы в порядке убывания, который будет последней меткой времени до текущего месяца)
Заменить print -rl на rm , если результат вас устраивает.

2
24.08.2016, 21:55
1 ответ

Несмотря на все усилия некоторых по сжатию данных на месте , tar действительно может создать файл f в какой-либо другой файловой системе (или может передать tarball в другую систему через SSH, если на локальном компьютере действительно не хватает места на диске).

cd A
tar cvzf /path/to/B/archive.tgz a_folder
tar cvz a_filter | ssh somehost '...'
0
27.01.2020, 22:45

Теги

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