You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写单行shell命令创建带递增序号文件夹并将文件逐一移入

你编写的命令未生效是因为循环体使用了()包裹,这会触发子shell执行逻辑,子shell内对num变量的修改无法同步到父shell环境,导致每次循环的num值都无法正常累加。

以下是两个可直接使用的单行实现方案:

方案1:基于原有逻辑优化,兼容性更强

修改子shell问题,同时兼容带空格、特殊符号的文件名场景:

num=0; while IFS= read -r p; do ((num++)) && mkdir -p "folder_${num}" && mv -- "${p}" "folder_${num}"; done < txt_list

可选优化:如果不需要保留txt_list中间文件,可以直接合并排序逻辑,无需提前生成文件:

num=0; while IFS= read -r p; do ((num++)) && mkdir -p "folder_${num}" && mv -- "${p}" "folder_${num}"; done < <(ls -1 | sort -V)

方案2:借助工具自动生成序号,写法更简洁

不需要手动维护计数变量,用nl命令自动给文件列表加行号处理:

nl -n ln txt_list | xargs -L 1 sh -c 'mkdir -p "folder_$1" && mv -- "$2" "folder_$1"' sh

内容的提问来源于stack exchange,提问作者Johnny Tam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:54:04