すべてのファイルを新しいディレクトリにコピーすることでディレクトリを平らにすることができるPOSIXシェルスクリプトの一部を以下に示します。

「バッシュ
lc_all = c find/dir1 -path '/dir1/*/*' -type f -exec sh -c '
  execmv "$@" /dir1 'sh {} +
`` `

「バッシュ
DIR1 -TYPE F -EXEC MV {} dir1 \;
dir1 -depth -exec rmdir {} \;
`` `

「バッシュ
dir1 -type f -exec sh -c 'mv "$@" dir1' _ {} +を見つける
dir1 -depth -exec rmdir {} +を見つけます
`` `

そして、これがバッシュシェルの相当物です：

「バッシュ
find /foo -iname '*.txt' -exec cp \ {\} /dest /\;
`` `

上記のスクリプトを使用すると、すべてのファイルの新しい「CP」プロセスを分岐します。これは、特に多数のファイルがある場合、それほど効率的ではないことに注意してください。

パフォーマンスについては、別の解決策があります。

「バッシュ
探す 。-name "*.xml" -print0 |xargs -0エコーCp -t a
`` `
Here are some of the POSIX shell scripts that can flatten directories by copying all files to a new directory:

```bash
LC_ALL=C find /dir1 -path '/dir1/*/*' -type f -exec sh -c '
  exec mv "$@" /dir1' sh {} +
```

```bash
find dir1 -type f -exec mv {} dir1 \;
find dir1 -depth -exec rmdir {} \;
```

```bash
find dir1 -type f -exec sh -c 'mv "$@" dir1' _ {} +
find dir1 -depth -exec rmdir {} +
```

And here are the Bash shell equivalents:

```bash
find /foo -iname '*.txt' -exec cp \{\} /dest/ \;
```

Note that with the above script, it forks off a new "cp" process for every file, which is not terribly efficient especially if there is a large number of files.

For performance, I have another solution:

```bash
find . -name "*.xml" -print0 | xargs -0 echo cp -t a
```