用xargs配合mkdir创建目录时,无特殊字符可用cat dirs.txt | xargs -i {} mkdir -p {};含空格或特殊字符应改用while ifs= read -r dir; do mkdir -p "$dir"; done
直接用
xargs配合mkdir从文本文件读取目录名创建,关键在于处理好换行、空格和特殊字符——否则容易出错或漏建。基础写法:简单无空格场景
如果
dirs.txt每行一个目录名,且名字不含空格、括号、中文等:
cat dirs.txt | xargs mkdir—— 最简形式,适合纯英文、无空格的名称cat dirs.txt | xargs -I {} mkdir -p {}—— 加-I {}更清晰,-p确保路径安全(即使含斜杠也自动补父级)带空格或特殊字符必须加防护
一旦目录名含空格(如
user data)、括号(config (backup))或中文,裸用xargs会把一行拆成多个参数,导致失败。
Shell脚本编写基础 中文WORD版下载Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统
- 正确做法:用
while read替代xargs,更稳妥:while IFS= read -r dir; do mkdir -p "$dir"; done- 若坚持用
xargs,需配合find -print0和xargs -0,但前提是源文件用\0分隔(通常不现实);普通文本不推荐硬套加权限控制和错误反馈
默认权限受
umask影响,不确定时建议显式指定:
cat dirs.txt | xargs -I {} mkdir -m 755 -p {}—— 强制设为rwxr-xr-x- 想看到每条命令是否执行成功,可加
-t(打印并执行)或-p(交互确认):cat dirs.txt | xargs -t -I {} mkdir -p {}验证是否全部创建成功
执行完后快速检查:
cat dirs.txt | xargs -n1 ls -d 2>/dev/null || echo "缺失目录"—— 列出所有已存在目录,报错项即未创建成功- 对比行数:
wc -l dirs.txt和ls -1 | wc -l(注意排除隐藏文件)
相关文章
Shell脚本实战怎么构建类似守护进程的死循环监控脚本并在崩溃后自愈重启
Shell脚本实战怎么对生产数据库敏感字段进行脱敏清洗后再导出至测试库
Linux Shell 脚本中使用 awk 进行数据处理的实践
Linux Shell 脚本参数传递与 getopts 工具应用
Shell脚本实战怎么自动续签免费SSL证书并平滑重载Web服务
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn












