Переименовать файлы с определенным расширением и датой добавления в unix

Часть 1

  1. ps - это команда, которая сообщает моментальный снимок текущих процессов, и аргумент -e указывает ps , чтобы сообщать обо всех процессах.
  2. | - труба. Это позволяет перенаправить вывод предыдущей команды в другую команду. В этом примере вы перенаправляете вывод ps -e на sort .
  3. sort - это команда, которая позволяет вам сортировать строки из стандартного ввода. Аргумент -k 1 сортируется по ключу, в данном случае 1 . Это означает, что вы собираетесь выполнить сортировку по первому столбцу ps -e , номера PID.Аргумент -nr сортирует ввод в числовом порядке в обратном (по убыванию) порядке.
  4. ПРИМЕЧАНИЕ. Аргумент -n фактически избыточен в этой реализации. Он вам не нужен, потому что вы уже указываете sort для сортировки по первому столбцу. ps -e | grep -rk 1 будет работать точно так же.

Часть 2

  1. Аргумент -c или - bytes = [-] K позволяет распечатать первый или все, кроме последних X килобайт файла. , где X - количество килобайт, которое вы хотите напечатать. Чтобы напечатать первые X килобайт, просто введите число после -c . Чтобы напечатать все, кроме последних килобайт, добавьте - перед X килобайтами.

  2. Также обратите внимание, что с -c вам не нужно указывать число, за которым следует K . Этот синтаксис необходим только в аргументе - bytes = .

1
16.04.2018, 13:09
1 ответ

Вы можете попробовать следующее:

for i in *.1.gz; do mv "$i" "$(basename $i.1.gz).$(date +'%Y%m%d%H%M').gz"; done

basenameизвлечет первую часть имени файла.

Обратите внимание, что команда dateиспользует одинарную кавычку ', а не ту, которую вы указали в своем вопросе.

3
27.01.2020, 23:23

Теги

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