我想tb2
从一堆像这样的文本文件创建文件。
tar cfj $(basename ./2014_04_09.txt .txt).tb2 $(basename ./2014_04_09.txt)
2014_04_09.tb2
使用此命令我可以创建一个不包含目录的存档文件。
但是当使用这样的-exec
选项应用命令时,find
find . -name "*.txt" -exec tar cfj $(basename "{}" .txt).tb2 $(basename "{}") \;
此命令创建具有原始扩展名 ( 2014_04_09.txt.tb2
) 的存档文件以及存档内的目录。
当仅应用单个文件时,如何将tar
命令与like 一起使用。find
答案1
您需要使用-exec
shell 命令:
find . -name "*.txt" -exec sh -c 'tar cfj $(basename "{}" .txt).tb2 "{}"' -- {} \;
此外,请注意您的find
命令是发现各级文件。因此,basename
如果当前目录中不存在文件,则使用传递文件列表将不起作用。
详细说明,
tar cfj foo.tb2 foo.txt
foo.txt
如果当前目录中不存在,则会导致错误。因此,您需要将路径传递给foo.txt
.