Move

移動文件時有一個額外的 > 字元,現在該文件夾失去了

  • August 8, 2019

我嘗試將 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,它似乎在那裡,但我不能llcd它:

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

如何將原件恢復到原來的位置?

這裡>將標準輸出重定向到一個文件,就像在更正常的案例中一樣:

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’s stdout(可能沒有)寫入test2.dbf您目前的目錄中。希望這不會意外覆蓋 Oracle 數據文件。

PS:如果 extra>是一個常見的問題,bash 的set -o noclobber/set -C選項至少可以幫助防止覆蓋文件。bash 手冊頁將其描述為:如果設置,bash 不會使用 、 和重定向運算符覆蓋>現有>&文件<>。在使用重定向運算符>|而不是>.

引用自:https://unix.stackexchange.com/questions/534409