

特定のファイル拡張子を持つディレクトリ内の何千ものファイルを別のディレクトリに移動することは可能ですか？たとえば、.cppディレクトリと.hppディレクトリがあります。
.cppディレクトリ内のすべての.hppファイルを.hppディレクトリに移動します。 `mv ** / *。hpp / path / to / single
/ target / directory`を使おうとすると、それほど多くのファイルを扱うことができないと言われます。


CC BY-SA 4.0
2019-02-15T16:17:38.707
52800
2019-02-15T22:00:22.000
2019-02-15T17:48:30.157
3060
30795
question
linux
ディレクトリ内のファイルを一括移動

[code]

    find cpp -name "*.hpp" -print | xargs -I@ mv @ hpp
    
[/code]


CC BY-SA 4.0
2019-02-15T16:37:06.090
52801
2019-02-15T16:37:06.090
25261
52800
answer


`find` コマンドの `-exec` オプションが使えます。ただしサブディレクトリへ移動しようとしている場合の挙動は自明ではないのでご注意ください。

[code]

    find <探索元ディレクトリ> -type f -name "*.hpp" -exec mv {} <移動先ディレクトリ> \;
    
[/code]

または GNU 版の mv だと下のようにも書けます。

[code]

    find <探索元ディレクトリ> -type f -name "*.hpp" -exec mv --target-directory=<移動先ディレクトリ> {} +
    
[/code]


CC BY-SA 4.0
2019-02-15T22:00:22.000
52802
2019-02-15T22:00:22.000
19110
52800
answer