【发布时间】:2015-05-15 02:37:44
【问题描述】:
我有一个脚本,它试图用tar 归档目录的内容:
#!/bin/bash
find /root/files -type f -name "1*" -print0 | while read -d $'\0' file
do
MYDIRNAME=$(dirname "${file}")
MYFILENAME=$(basename "${file}")
MYMODIFYDIR=$(echo "$MYDIRNAME" | sed 's/^\///' | sed 's/\//_/g' | sed 's/\ /_/g')
MYMODIFYFILENAME=$(echo "$MYFILENAME" | sed 's/\//_/g' | sed 's/\ /_/g')
GZIP=-9 tar -zcvf /root/"$MYMODIFYDIR"_"$MYMODIFYFILENAME".tar.gz "$file"
done
它不适用于名称中包含前导或尾随空格的文件。到达文件 /root/files/tetst\ test\ tgdjd/1\ 5765765\ 565765\ 时发生错误(注意文件名中的尾随空格):
tar: /root/files/tetst test tgdjd/1 5765765 565765: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
tar 给出的错误在文件名中修剪了 的尾随空格。
【问题讨论】:
-
您始终可以运行带有
.tar.gz扩展名的tar命令,然后使用mv重命名文件。 -
问题是文件末尾包含 1 5765765 565765 空间。
-
/root/files/tetst test tgdjd/1 5765765 565765文件存在吗?