Добавить дату к имени файла, используя команды find и exec - PullRequest
0 голосов
/ 14 февраля 2019

имея следующий код bash в Linux, как я могу изменить его, чтобы добавить метку даты после того, как gz завершил свой процесс?

DOMINIO=filenetvers 
DATAORA_ATTUALI=$(date +"%Y.%m.%d") 
GGZIP=1 
GGRM=90 
find /work/pr-${DOMINIO}-0[0-2]/servers -name "*.log*[^gz]" -type f -user bea -mtime +${GGZIP} -exec /usr/bin/gzip -9 -f {} "*.gz.$DATAORA_ATTUALI" \; 
find /work/pr-${DOMINIO}-0[0-2]/servers -name "*.stdout*[^gz]" -type f -user bea -mtime +${GGZIP} -exec /usr/bin/gzip -9 -f {} "*.gz.$DATAORA_ATTUALI" \; 
find /work/pr-${DOMINIO}-0[0-2]/servers -name "*.stderr*[^gz]" -type f -user bea -mtime +${GGZIP} -exec /usr/bin/gzip -9 -f {} "*.gz.$DATAORA_ATTUALI" \;

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Это для просмотра вашего вывода из поиска:

find ./ -type f -name "nsshow*" -exec echo cp {} /tmp/{}_test \;
cp ./nsshow_SANSW06_FABB /tmp/./nsshow_SANSW06_FABB_test
cp ./nsshow_SANSW02_FABB /tmp/./nsshow_SANSW02_FABB_test
cp ./nsshow_SANSW05_FABA /tmp/./nsshow_SANSW05_FABA_test
cp ./nsshow_SANSW01_FABA /tmp/./nsshow_SANSW01_FABA_test

Это для запуска:
find ./ -type f -name "nsshow*" -exec cp {} /tmp/{}_test \;

Вышеприведенный цикл «для» хорош и прост для продвинутой работы:

for f in $(find /work/pr-${DOMINIO}-0[0-2]/servers -name "*.log*[^gz]" -type f -user bea -mtime +${GGZIP})
do
 /usr/bin/gzip -9 -f $f
 mv $f.gz $f.gz.$DATAORA_ATTUALI
done
0 голосов
/ 14 февраля 2019

Простое решение состоит в том, чтобы использовать простой цикл for, выполнить gzip и переименовать так:

for f in $(find /work/pr-${DOMINIO}-0[0-2]/servers -name "*.log*[^gz]" -type f -user bea -mtime +${GGZIP}) ; do /usr/bin/gzip -9 -f $f ; mv $f.gz $f.gz.$DATAORA_ATTUALI; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...