web-dev-qa-db-ja.com

ディレクトリを移動するLinuxコマンド

私の古いディレクトリと新しいディレクトリには、同じフォルダとファイルがあります。

私が試す:

mv -if old/* new/*

エラーが発生する

mv: `./xxxxxx 'をそれ自体のサブディレクトリに移動できません

どうすれば移動できますか?

25
Qooe

末尾にmv -if old/* new/を付けずに*を使用する必要があります。

これは展開されたためです

mv -if old/foo old/bar old/baz new/foo new/bar new/baz

つまり、すべてをnew/bazに移動します

これはあなたが望んだものではありません。

30
alamar
reef@localhost:/tmp/experiment$ ls a
11  22  33
reef@localhost:/tmp/experiment$ ls b
22  33
reef@localhost:/tmp/experiment$ ls
a  b
reef@localhost:/tmp/experiment$ mv a/* b
reef@localhost:/tmp/experiment$ ls a
reef@localhost:/tmp/experiment$ ls b
11  22  33

できます。何を達成しようとしていますか?入力データがどうあるべきか、出力データがどうあるべきかの短い例を書いていただけませんか?真実は私があなたが何をしようとしているのかわからないことです:)私があなたを助けるのを助けてください。

5
Paweł Polewicz

mv a/* b /は、a /からb /にファイル。*(ファイル名が「。」で始まる)を移動しないことに注意してください。

例:

$ mkdir -p a/d b && touch a/f a/.f a/d/.f
$ mv a/* b/
$ ls -a a/
.  ..  .f
3

あなたは答えを得たかもしれませんが、上の答えは私にとってはうまくいきません...そして最後に多くの研究で私は答えを得ました。 (問題はファイルの所有権が原因です)
コマンドの前にSudoを置くだけで動作します。..:) cpコマンドとmvコマンドでも同じです。

Sudo mv -if old/* new/
1
Manish Trivedi

Ext2/3/4ファイルシステムからFAT32ファイルシステムにコピーしていて、ファイル名にFAT32命名規則に対して無効な文字が含まれている場合、これは非常に煩わしく、地獄のエラーメッセージとして正しくありません。どうやって知るの?私はこのバグに取り組みました-はい、それはカーネルバグです-それが私に気付く前の6時間。シェルインタープリターエラーだと思いました。「mv」エラーだと思いました。複数の異なるシェルを試しました。この実験を試してください:extファイルシステムで、「touch 'a:b'」して、それらをFAT32ファイルシステムに「mv」します。試してみてください、あなたは結果を楽しむ(嫌う)でしょう。同じことが「<」と「>」にも当てはまります(\ 074と\ 076)。

「man mv」をありがとう-これは本当に大きな助けです。毎日の仕事を辞めないでください。

1
Henry Killinger