我只想从文件创建存档并保留文件名。
File = host1.log
Tar = Archive_date_host1.tar.gz
我正在使用它:
find /var/log/TESTIN/ -daystart -mtime 7 -type f | xargs tar -czPf /var/log/TESTOUT/ARCHIVE_$(date +%F)_FILENAMEHERE.tar.gz
我可以做“归档”和日期部分,但有没有办法获取文件名并使用它?我搜索了一堆,似乎找不到任何东西。
答案 0 :(得分:1)
我认为只有find
就足够了。例如,以下命令在使用您想要的命名方案找到的每个文件中创建一个.tar.gz
存档。请注意,{}
已替换为找到的文件名
find * -type f -exec tar -czf ARCHIVE_$(date +%F)_{}.tar.gz {} \;
答案 1 :(得分:1)
看起来您希望使用每个文件的basename作为输出文件的可变部分,即删除名称的目录部分和.log
后缀。试试这个:
find /var/log/TESTIN/ -daystart -mtime 7 -type f | \
xargs -I {} sh -c 'tar -czPf /var/log/TESTOUT/ARCHIVE_$(date +%F)_$(basename {} .log).tar.gz {}'