1
$ ls -lrt *.extract.sys 
-rw-r--r--   1 sftwrk01   test       1729455 Dec 01 21:21 ar.ARAB-PI_3.20101231.extract.sys
-rw-r--r--   1 sftwrk01   test       1684929 Dec 30 21:21 ar.ARAB-PI_5.20101231.extract.sys
-rw-r--r--   1 sftwrk01   test       1696332 Dec 30 21:21 ar.ARAB-PI_1.20101231.extract.sys
-rw-r--r--   1 sftwrk01   test       1726197 Dec 30 21:21 ar.ARAB-PI_7.20101231.extract.sys
-rw-r--r--   1 sftwrk01   test       1692531 Dec 03 21:21 ar.ARAB-PI_2.20101231.extract.sys
-rw-r--r--   1 sftwrk01   test       1606737 Dec 30 21:21 ar.ARAB-PI_0.20101231.extract.sys
-rw-r--r--   1 sftwrk01   test       1803846 Dec 30 21:21 ar.ARAB-PI_8.20101231.extract.sys
-rw-r--r--   1 sftwrk01   test       1689816 Jan 30 21:21 ar.ARAB-PI_9.20101231.extract.sys
-rw-r--r--   1 sftwrk01   test       1724025 Jan 30 21:21 ar.ARAB-PI_6.20101231.extract.sys
....

Мне нужно заархивировать файлы в декабре месяце.

Пока я попробовал ниже, и это не сработало

$ ls -lrt *.extract.sys | grep Dec | gzip            
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h

Пожалуйста помоги

2 ответа2

1

Вы пытаетесь сжать имена файлов вместо файлов. Не отправляйте gzip имена файлов на stdin, отправляйте их в качестве аргументов.

1

Предполагая, что вы хотите сжать фактическое содержимое файла, а не только листинг, вам нужно создать архив tar перед сжатием с помощью GZip. Кроме того, использование find может быть более надежным, чем grepping ls output.

Сначала создайте файлы маркеров с датами, обозначающими начало и конец декабря, затем найдите все файлы с временами изменения между этими двумя файлами и используйте xargs с tar для их упаковки и отправки в GZip. Вот как это делается:

  touch -t 201012010000 start
  touch -t 201101010000 end
  find . -iname \*.extract.sys -newer start \! -newer end -print0 | xargs -0 tar czvf dec.tar.gz
  rm start
  rm end

Убедитесь, что в каталоге нет важных файлов с именами "начало" и "конец"! Если это так, используйте другие имена или поместите файлы маркеров, например, в /tmp.

Также обратите внимание, что любые подкаталоги с именами, соответствующими «* .extract.sys», также будут сжаты. Если это не нужно, добавьте эти флаги, чтобы найти: -type f -depth 1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .