Ped*_*lez 8 command-line shell file-management
我也有 50 个文件夹和一些子文件夹,总共有 1000 多个音频文件。我需要删除所有子文件夹并将所有文件放在当前级别。尝试过mv */* ./
但它抱怨:参数列表太长
我假设您的音频文件扩展名为 .mp3
find <AudioFolderPath> -name '*.mp3' -exec mv -it <YourTargetFolder> {} +
Run Code Online (Sandbox Code Playgroud)
替换.mp3
为您的音频文件扩展名
替换<AudioParentFolderPath>
为包含子文件夹的父文件夹。
替换 <YourTargetFolder>
为您需要放置所有文件的文件夹路径。
如果来自不同子文件夹的两个文件具有相同的名称,则只会移动一个。
编辑:正如科斯塔斯所说:“-i
开关使mv
交互式,它会在覆盖现有文件之前提示”
find . -type f -mindepth 2 -exec mv -t ./ {} +
Run Code Online (Sandbox Code Playgroud)
请注意,该命令将覆盖任何同名文件。您可以使用它在覆盖之前进行提示:
find . -type f -mindepth 2 -exec mv -it ./ {} +
Run Code Online (Sandbox Code Playgroud)
-type f
: 只查找常规文件。-mindepth 2
:仅查找子目录中的文件。-exec mv -it ./ {}
:-exec
意思是“对找到的每个文件运行此命令”。将{}
替换为文件名。该-i
开关是mv
交互式的,它会在覆盖现有文件之前进行提示,并将-t
目标目录设置为./
.+
:将文件放在一起(在一个参数行中),尽可能多的文件可以使用命令进行操作,以调用命令最少次数(不是一一而是一对多)。关于进一步的空文件夹删除,您可以使用相同的接收方式:
find . -type d -empty -delete
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11712 次 |
最近记录: |