スポンサーリンク

findとxargsで再帰的にcpする

※MACターミナル(BSD系)での動作確認です。

.cファイルを再帰的に、カレントディレクトリにcpします。
findの検索結果を、xargsの-Iオプションで、cpに渡します。

参考:findの-execオプションを使った方法はこちら

$ find . -type f -name "*\.c" | xargs -I{} cp "{}" .

例えば、下記のディレクトリがあったとします。

$ tree
.
├── dir001
│   ├── dir
│   │   └── file3.c
│   └── file3.txt
└── dir002
    ├── dir
    │   └── file2.cpp
    ├── file1c
    └── file3.txt

4 directories, 5 files

下記が実行結果になります。
カレントディレクトリに、.c ファイルをcpできました。
$ find . -type f -name "*\.c" | xargs -I{} cp "{}" .
$ ls
dir001	dir002	file3.c

スポンサーリンク

findとxargsで再帰的にmvする

参考:findの-nameオプションでor検索, not検索する

.txtファイルを再帰的に、rmします。

方法は先程と同様になります。
xargsを使ってrmに検索ファイルを渡します。

$ find . -type f -name "*\.txt" | xargs -I{} rm "{}"

下記が実行結果になります。

$ find . -type f -name "*\.txt" | xargs -I{} rm "{}"
$ tree
.
├── dir001
│   └── dir
│       └── file3.c
├── dir002
│   ├── dir
│   │   └── file2.cpp
│   └── file1c
└── file3.c

4 directories, 4 files

スポンサーリンク