我正在做一个恢复备份脚本,当我尝试加入分割的文件时, cat 打印该错误:
cat: fullbackup_mrbsNuevo_15_6_2016.tar.gz.*: No such file or directory
运行 cat 命令的行是这一行:
cat $type"_"$NAME_DIR"_"$d"_"$2"_"$1".tar.gz."\* > $type"_"$NAME_DIR"_"$d"_"$2"_"$1".tar.gz"
我已检查文件是否存在并且它们位于目录中。我也尝试过在 shell 中运行该命令并且工作正常。
我不知道我的剧本有什么不好。
当我在目录中运行 ls 命令时,文件为:
cisco@Paquito1:/tmp/backup$ ls -lah
total 7,1M
drwxr-xr-x 2 cisco cisco 4,0K 2016-06-18 12:01 .
drwxrwxrwt 5 root root 4,0K 2016-06-18 10:10 ..
-rw-r--r-- 1 cisco cisco 5,0M 2016-06-18 11:52 fullbackup_mrbsNuevo_15_6_2016.tar.gz.aa
-rw-r--r-- 1 cisco cisco 2,1M 2016-06-18 11:52 fullbackup_mrbsNuevo_15_6_2016.tar.gz.ab
在执行 cat 命令之前,我移动到 /tmp/backup 目录。
提前致谢。
答案1
你不应该逃避*
,这将导致 shell/bash 搜索一个垃圾星,而不是扩展文件名。
尝试
cat $type"_"$NAME_DIR"_"$d"_"$2"_"$1".tar.gz."* > $type"_"$NAME_DIR"_"$d"_"$2"_"$1".tar.gz"
编辑
附注我想引用
cat ${type}_${NAME_DIR}_${d}_${2}_${1}.tar.gz.* > ${type}_${NAME_DIR}_${d}_${2}_${1}.tar.gz"
答案2
最后这是解决方案:
cat $type"_"$NAME_DIR"_"$d"_"$2"_"$1".tar.gz."* > $type"_"$NAME_DIR"_"$d"_"$2"_"$1".tar.gz"
我没有转义 * 并将其放在“”之外。感谢Archemar 的回答。他帮助我找到我的错误。