Inq*_*Kea 84 command-line find recursive files
我在几个目录中有一堆 .zip 文件:
Fol1/Fol2
Fol3
Fol4/Fol5
Run Code Online (Sandbox Code Playgroud)
我将如何将它们全部移动到一个通用的基本文件夹?
Gil*_*il' 106
转到包含 zip 文件 ( cd …)的树的顶级目录,然后运行
mv **/*.zip /path/to/single/target/directory/
Run Code Online (Sandbox Code Playgroud)
这在 zsh 中开箱即用。如果您的 shell 是 bash,您需要先运行shopt -s globstar(您可以并且应该将此命令放在您的 .bashrc 中~/.bashrc)。如果你的 shell 是 ksh,你需要先运行set -o globstar(把它放在你的~/.kshrc)中。
或者,使用find,它可以在没有特殊准备的情况下随处使用,但更复杂:
find . -name '*.zip' -exec mv {} /path/to/single/target/directory/ \;
Run Code Online (Sandbox Code Playgroud)
如果以后要删除空目录,请在 zsh 中:
rmdir **/*(/^Fod)
Run Code Online (Sandbox Code Playgroud)
在 bash 或 ksh 中:
rmdir **/*/
Run Code Online (Sandbox Code Playgroud)
只要有空目录要删除,就重复。或者,在任何外壳中
find . -depth -type d -empty -exec rmdir {} \;
Run Code Online (Sandbox Code Playgroud)
Ber*_*ard 22
如果您只想移动.zip文件,则可以执行以下操作
mkdir ./zipfiles
find . -name "*.zip" -exec mv "{}" ./zipfiles \;
Run Code Online (Sandbox Code Playgroud)
小智 5
这在移动数据时是安全的并且无错误,支持大多数发行版,无论版本如何。此命令将扫描子目录,然后移动或复制到新的目标目录。
find . -name *.flac -exec mv '{}' "./flac/" ";"
Run Code Online (Sandbox Code Playgroud)
*.flac为*.zip与您的情况类似的任何内容。或者*.doc任何扩展都可以。mv是移动文件的命令,或者您可以使用cp复制数据而不是移动。./flac/是我要将所有 FLAC 文件移动到的目标目录。您还可以给它一个完整的路径,例如/home/myid/flac/完整的例子。(在这种情况下,有许多带有音乐艺术家姓名的子目录/home/myid/Music/,然后 FLAC 文件位于不同的子目录级别。因为我不需要艺术家文件夹,但希望将所有 FLAC 文件放入一个目录中/home/myid/Music/flac/
cd /home/myid/Music
mkdir flac
find . -name *.flac -exec mv '{}' "./flac/" ";"
cd flac
ls
Run Code Online (Sandbox Code Playgroud)
然后它将显示所有 FLAC 文件。
| 归档时间: |
|
| 查看次数: |
228218 次 |
| 最近记录: |