移动文件时有一个额外的 > 字符,现在文件夹丢失了

移动文件时有一个额外的 > 字符,现在文件夹丢失了

我尝试将 Linux 中的文件从一个目录移动到另一个目录,结果意外地多了一个 > 字符。

mv /u01/app/oracle/product/12.1.0.2/db_1/dbs/>test2.dbf /u01/shared_data/oradata/TEST/test.dbf

现在,我的整个dbs文件夹都丢失了。但是,当我找到该dbs文件夹​​时/u01/app/oracle/product/12.1.0.2/db_1/dbs,它似乎在那里,但我不能ll或无法cd找到它:

-bash: cd: /u01/app/oracle/product/12.1.0.2/db_1/dbs: No such file or directory

如何将原件恢复到原来的位置?

答案1

这里>将 stdout 重定向到一个文件,就像在更正常的用例中一样:

printf "%s\n" "hello world" > filename

周围的空格>是可选的,并且不必放在最后。这也有同样的作用:

printf "%s\n">filename "hello world" 

所以你的mv行会更传统地写成:

mv /u01/app/oracle/product/12.1.0.2/db_1/dbs/ /u01/shared_data/oradata/TEST/test.dbf > test2.dbf

它将您的文件夹重命名为test.dbf(在不同的目录中)并将mv的 stdout (可能什么都没有)写入test2.dbf当前目录中。希望这不会意外覆盖 Oracle 数据文件。

PS:如果 extra>是一个常见问题,bash 的set -o noclobber/set -C选项至少可以帮助防止覆盖文件。 bash 手册页将其描述为:如果设置,bash 不会使用 、 和 重定向运算符覆盖>现有>&文件<>。当使用重定向运算符>|而不是>.创建输出文件时,这可能会被覆盖。

相关内容