よちよちpython

独習 python/Qpython/Pydroid3/termux/Linux

【Linuxコマンド mv】複数ファイルを同じフォルダに一括移動させる

Linuxコマンドのmvを使って、複数のファイルを一括で 同じフォルダに移動させる方法のメモ。

【注意 追記】
移動先フォルダに 同名のファイル があると、上書き保存 されてしまいます。移動先フォルダを新規作成した直後の一括移動は無問題。既存フォルダへの移動は何か対策をしておく必要があります。
【追記おわり】



mvコマンドは名前を変更する時にも使えます。

$ mv 変更前 変更後



ファイルを移動するときは、

$ mv ファイル名 移動先フォルダ



複数のファイルを同じフォルダに移動させるときは、

$ mv ファイル1 ファイル2 フォルダ名/.

のように、移動先フォルダ名の後ろに/.をつける。



その理由は、

ファイルを移動するディレクトリが存在しなかった場合、エラーとならずに指定したディレクトリ名にファイル名称が変更されてしまいます。
$ mv test_01.txt sub(※存在しない)

subディレクトリが存在しないとsubという名称でファイル名が変わってしまいます。
そのため、この問題を解消するために、ディレクトリにファイルを移動する場合は、ディレクトリ名称のあとに「/.」を付けてあげましょう。
「/.」を付加することで、そのディレクトリ直下にファイルを移動することを示すコマンドとなりますので、ディレクトリが存在しないと移動することはできません。

【Linuxコマンド】mvでファイル・ディレクトリを移動する方法 | 侍エンジニアブログ



複数ファイルの移動コマンド実験

以下は操作ログのコピペ

[茶屋@test]$ tree .  # ディレクトリ構成の表示
.
├── a.py
├── b.py
└── test_dir

1 directory, 2 files

[茶屋@test]$ mv a.py py test_dir/.b  # 移動させようとして、ファイルとフォルダ名を間違った
mv: target 'test_dir/.b' is not a directory

[茶屋@test]$ mv a.py b.py  test_dir/. # 2つのファイルをtest_dirに移動させた

[茶屋@test]$ tree .   # ディレクトリ構成確認
.
└── test_dir
    ├── a.py
    └── b.py

1 directory, 2 files

[茶屋@test]$ cd test_dir/   # 移動

[茶屋@test_dir]$ ls   # ディレクトリの中身確認
a.py  b.py

[茶屋@test_dir]$ mv a.py b.py test/. # 存在しないフォルダ先に移動させようとした
mv: target 'test/.' is not a directory

[茶屋@test_dir]$ mv a.py b.py     # 移動フォルダ名を書き忘れた

[茶屋@test_dir]$ ls  # ディレクトリの中身確認
b.py    # ファイル名a.pyが消えた(b.pyに名前が変わった)



以上です。



【関連リンク】

ファイル名に付加された連番から番号指定で複数ファイルを一括フォルダ移動させる方法です。ls grep seq mv ブレーズ展開 正規表現 を使っています。