gpt4 book ai didi

linux - 压缩文件列表的文件名中包含空格

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:45:28 24 4
gpt4 key购买 nike

我一直在尝试使用 bash 文件压缩一组文件名中包含空格的文件。 bash 文件是:

#!/bin/bash
tar -cPf 'myconfigs.tar' `cat myconfigs.list`

myconfigs.list 文件的内容是:

/home/anas/.config/chromium/Default/Bookmarks
/home/anas/.config/chromium/Default/Login Data
/home/anas/.config/chromium/Default/Login Data-journal

问题是文件名中包含空格的文件不会包含在结果 TAR 存档中。我尝试了 '', "", %20... 但没有成功。

提前感谢您的帮助。

最佳答案

阿纳斯,

我认为你需要使用:

tar -cPf myconfigs.tar -T myconfigs.list

而不是你的“猫”。如果你正确地转义里面的文件名,cat 应该也能工作,但是 -T 更好。

已更新(在问题的评论中解决您的问题):我无法对您的问题发表评论(没有足够的声誉),所以我决定改进我的答案。

波浪号 (~) 扩展是 shell 的东西,tar 不支持它。但是,要实现您想要实现的目标,您可以使用以下技巧:

  • 在 myconfigs.list 文件中使用相对路径(相对于主目录):
    .config/chromium/Default/Bookmarks    .config/chromium/Default/Login Data    .config/chromium/Default/Login Data-journal
  • run tar in such way that it changes directory to your home on startup:
    tar -cPf myconfigs.tar -C ~/ -T myconfigs.list

OK, I went ahead and created a sample session illustrating it:

root@web:~ # useradd -m galaxy
root@web:~ # su - galaxy
galaxy@web:~ $ mkdir -p {1,2}/{3,4}/{5,6,7}
galaxy@web:~ $ find . -xdev -type d -exec touch '{}/file.txt' \;
galaxy@web:~ $ cat << EOF > include.lst
> 1/3
> 1/4/5/file.txt
> 1/4/7
> 2/file.txt
> EOF
galaxy@web:~ $ cd 2/3/6
galaxy@web:~/2/3/6 $ tar cjSpf ~/sample.tar.bz2 -C ~/ -T ~/include.lst
galaxy@web:~/2/3/6 $ cd
galaxy@web:~ $ tar tjvf sample.tar.bz2
drwx------ galaxy/galaxy 0 2014-02-19 04:10 1/3/
-rw------- galaxy/galaxy 0 2014-02-19 04:10 1/3/file.txt
drwx------ galaxy/galaxy 0 2014-02-19 04:10 1/3/7/
-rw------- galaxy/galaxy 0 2014-02-19 04:10 1/3/7/file.txt
drwx------ galaxy/galaxy 0 2014-02-19 04:10 1/3/6/
-rw------- galaxy/galaxy 0 2014-02-19 04:10 1/3/6/file.txt
drwx------ galaxy/galaxy 0 2014-02-19 04:10 1/3/5/
-rw------- galaxy/galaxy 0 2014-02-19 04:10 1/3/5/file.txt
-rw------- galaxy/galaxy 0 2014-02-19 04:10 1/4/5/file.txt
drwx------ galaxy/galaxy 0 2014-02-19 04:10 1/4/7/
-rw------- galaxy/galaxy 0 2014-02-19 04:10 1/4/7/file.txt
-rw------- galaxy/galaxy 0 2014-02-19 04:10 2/file.txt
galaxy@web:~ $

应该给你一个开始:)

关于linux - 压缩文件列表的文件名中包含空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21811571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com