命名 tar 存档与源文件相同
Naming tar archive the same as source file
很简单,我想从文件创建存档并保留文件名。
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
"archive" 和日期部分我可以做,但是有没有办法获取文件名并使用它?我用谷歌搜索了很多,似乎找不到任何东西。
我认为 find
应该足够了。例如,以下命令使用您想要的命名方案从找到的每个文件中创建一个 .tar.gz
存档。请注意,{}
被找到的文件名替换,
find * -type f -exec tar -czf ARCHIVE_$(date +%F)_{}.tar.gz {} \;
貌似要将每个文件的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 {}'
很简单,我想从文件创建存档并保留文件名。
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
"archive" 和日期部分我可以做,但是有没有办法获取文件名并使用它?我用谷歌搜索了很多,似乎找不到任何东西。
我认为 find
应该足够了。例如,以下命令使用您想要的命名方案从找到的每个文件中创建一个 .tar.gz
存档。请注意,{}
被找到的文件名替换,
find * -type f -exec tar -czf ARCHIVE_$(date +%F)_{}.tar.gz {} \;
貌似要将每个文件的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 {}'