mv: 'path1/path2/filename1' と '/home/user1/dir1/path1/path2/filename1' は同じファイルです。

mv: 'path1/path2/filename1' と '/home/user1/dir1/path1/path2/filename1' は同じファイルです。

コマンドを使用した後:

find path1/ -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 {} \;

ファイルが同じであるというエラーが発生します。コマンドが正常に完了しました。検索が開始される親ディレクトリは次のとおりです。path1/次に、ターゲットディレクトリにファイルを移動する絶対パスを入力します。なぜこれが起こるのですか?

ベストアンサー1

つまりmv、特定のファイルをターゲットに移動するとファイル自体に書き戻されるため、特定のファイルを移動する必要はありません。

試してみても同じ結果が出るだろう

mv file file

名前がfile

についてはなぜ時には次のように進行します。

あなたはfind道を走っていますpath1。私はこれがpath1絶対パスと同じであると仮定します/home/user1/dir1/path1/path2

ファイル名が使用中のパターンと一致する場合(これらのファイルは前のコマンド/home/user1/dir1/path1/path2呼び出しによって渡されました。find同じ findディレクトリ巡回順序は)なので、(si)のサブディレクトリを介して見つけることができますfind。ファイルをからに移動するコマンドを実行するように求められます。これがメッセージを引き起こす原因です(実際に「エラー」と呼ぶことは迷います)。findpath2path1findmvpath2path2

到着避けるpath2として調査するには、find次のことができます。

find path1 \( -type d -path 'path1/path2' -prune \) -o -iname 'file*[1234]' -exec mv -t /home/user1/dir1/path1/path2 {} +

見つかったコンテンツがディレクトリ(-type d)でパス名である場合は、path1/path2ディレクトリを巡回したときに作成されたディレクトリ検索ツリーから削除します。それ以外の場合は、以前と同じように続けます(ほぼ一度にできるだけ多くのパス名を取得するためにfind最後のパスを変更しました)。\;+mv

おすすめ記事