如何用一行命令在所有目录下新增file.txt并输出对应文件路径
实现方案
方法1:Bash循环实现(简单直观,适配常规场景)
直接一行命令完成操作:
for dir in /*/; do touch "${dir}file.txt" && echo "${dir}file.txt"; done
说明:
/*/自动匹配根目录下所有一级子目录,无需手动逐个输入目录名&&确保只有touch创建文件成功后,才会输出对应的文件路径- 如果你的目标是/home下的所有子目录,把
/*/替换为/home/*/即可
方法2:find命令实现(灵活度更高,支持过滤特殊目录)
如果需要排除/proc、/sys、/dev这类系统虚拟目录(避免无意义的权限报错),推荐用find命令实现:
sudo find / -maxdepth 1 -type d ! -path / ! -path "/proc" ! -path "/sys" ! -path "/dev" -exec touch {}/file.txt \; -printf "%p/file.txt\n"
说明:
-maxdepth 1限制只检索根目录下的一级目录,不会递归到更深层级的子目录! -path /排除根目录本身,避免在/下直接创建file.txt- 多个
! -path参数用来过滤不需要操作的系统目录 - 末尾的
-printf会自动输出成功创建的文件路径
注意事项
- 操作根目录下的系统级目录需要root权限,执行命令前建议加
sudo前缀,否则会出现权限不足的报错 - 如果需要递归给所有层级的子目录都添加该文件,删除find命令里的
-maxdepth 1参数即可
内容的提问来源于stack exchange,提问作者Zaless
相关产品推荐
相关产品推荐

