You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中如何无需cd将指定文件打包到指定目录的tar且不保留目录结构

解决方案

核心实现原理

使用tar命令自带的-C参数即可满足需求,该参数会让tar在处理后续文件前临时切换到指定目录,不会改变你当前shell的工作目录,也不需要手动执行cd命令,且打包/追加的文件只会记录文件名本身,不会携带上层目录路径。

1. 首次创建无目录结构的tar包

对应你的示例场景,将/home/user/Desktop/source/file.txt打包到/home/user/bin/tar_dir/files.tar,命令如下:

tar -cf /home/user/bin/tar_dir/files.tar -C /home/user/Desktop/source file.txt

参数说明:

  • -c:表示创建新的tar包
  • -f:后面紧跟要生成的tar包的完整路径
  • -C /home/user/Desktop/source:临时切换到源文件所在的目录
  • 末尾的file.txt:要打包的文件名(在-C指定的目录下)

2. 向已有tar包追加文件

使用--append参数配合-C即可实现无路径追加,比如你要追加/home/user/documents/report.pdf到已有的files.tar中,命令如下:

tar --append -f /home/user/bin/tar_dir/files.tar -C /home/user/documents report.pdf

3. 验证tar包内部结构

执行以下命令可以查看tar包内的文件列表,确认没有携带上层目录路径:

tar -tf /home/user/bin/tar_dir/files.tar

正常输出结果为:

file.txt
report.pdf

解压时文件会直接释放到当前解压目录,不会生成嵌套文件夹。

注意事项

  • 如果需要一次打包/追加多个同目录下的文件,直接在-C指定的目录后面空格分隔填写多个文件名即可
  • 如果文件名包含空格、特殊字符,需要用英文双引号包裹文件名
  • 注意-C参数的位置:必须放在对应要处理的文件的前面,tar会按参数顺序执行目录切换操作

内容的提问来源于stack exchange,提问作者K M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:54:02