mvのエラーを無視する方法: 'XXXXXXを独自のサブディレクトリに移動できません。

mvのエラーを無視する方法: 'XXXXXXを独自のサブディレクトリに移動できません。

RHEL 7.6 サーバーに次のフォルダーを作成します。

# mkdir -p /var/data/data-logs_temp

/var/data/2番目の部分はすべてを次に移動することです /var/data/data-logs_temp

# mv /var/data/* /var/data/data-logs_temp

ただし、コマンドから得られた出力は次mvのとおりです。

mv: cannot move ‘/var/data/data-logs_temp’ to a sub directory of itself, ‘/var/data/data-logs_temp/data-logs_temp’

mvこれに関しては、コマンドが正しい。

mvしかし、コマンドの終了コードが必要なので、これを無視するように言うことはできますか?mv0

それとも、独自のサブディレクトリの移動を無視する別のオプションがありますか?

答え1

bashの「拡張glob」構文を使用して、移動するファイルのリストからdata-logs_tempサブディレクトリを除外できます。

shopt -s extglob
mv /var/data/!(data-logs_temp) /var/data/data-logs_temp

バラよりグレッグのウィキそしてこの問題glob 拡張に関する追加情報。

答え2

より単純なUnix / Linuxの世界では、拡張オプションを呼び出さずに次のことを行います。

(a)同じファイルシステムにあり、あなたが書くことができ、サブツリーにないmkdir data-logs_tempあなたが所有するすべてのディレクトリ(書き込みアクセス権がある場合は許可されます)。/var/data/var/data/var

(b)cd /var/dataおよびmv * /wherever/data-logs_temp、すべてのワイルドカード名を拡張するためにディレクトリ全体を使用しないでください。これはデータをコピーせずにリンクのみを生成し、ディレクトリを独自にコピーしようとしません。

(氏)mv /wherever/data-logs_temp /var/data。これは1つのリンクだけを移動し、ツリー構造を維持します。

関連情報