Tom*_*url 6 linux unix tar shell-scripting
我想创建一个 tarball,其中包含ctime小于 30 天的目录中的文件。我发现的大多数教程基本上都推荐做这样的事情:
tar cvf foo.tar $(find ~/POD -type f -ctime -30)
Run Code Online (Sandbox Code Playgroud)
问题是我想压缩的很多文件的名称中都包含空格。这意味着该tar命令将基于空格分隔,这意味着完整的文件路径将被分解。
所以现在我试图让find命令返回一个带引号的文件路径列表。所以这是我尝试过的:
find . -type f -ctime -30 | xargs printf "\"%s\"\n"
Run Code Online (Sandbox Code Playgroud)
但是这个命令也把所有基于空格的文件名分解了。然后我尝试了这个:
oldifs=$IFS
IFS=\n
find . -type f -ctime -30 | xargs printf "\"%s\"\n"
IFS=$oldifs
Run Code Online (Sandbox Code Playgroud)
但这给了我相同的结果。
有没有办法可以将完整路径名传递给tar并让所有内容都使用名称中的空格?
GNUtar可以-T选择从指定文件中获取文件列表。我会使用find ... -print0 | tar cfzT outfile.tgz - --nullsotar接收以空字符结尾的文件名stdin。
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |