ファイルを移動するときに追加>文字があり、フォルダはありません。

ファイルを移動するときに追加>文字があり、フォルダはありません。

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

元を元の場所に復元するにはどうすればよいですか?

答え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別のディレクトリにあるフォルダの名前を変更し、現在のディレクトリにmvstdout(何もない)を記録します。test2.dbf誤ってOracleデータファイルを上書きすることがないことを願っています。

PS:追加の>問題が一般的な問題である場合、bashのset -o noclobber/set -Cオプションは少なくともファイルの上書きを防ぐのに役立ちます。 Bashのマニュアルページでは、これを次のように説明します。設定されている場合、bashはリダイレクト演算子を使用して>既存の>&ファイルを上書きしません<>。 。>|代わりに、リダイレクト演算子を使用して>出力ファイルを作成するときは、オーバーライドできます。

関連情報