当我在脚本中运行时,cat 没有加入我的文件

当我在脚本中运行时,cat 没有加入我的文件

我正在做一个恢复备份脚本,当我尝试加入分割的文件时, 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 的回答。他帮助我找到我的错误。

相关内容