【问题标题】:Is there a way to use a for loop to create directories based on filenames?有没有办法使用 for 循环根据文件名创建目录?
【发布时间】:2021-12-09 15:14:10
【问题描述】:

我想根据我已有的文件名创建目录。例如,假设我有:

red.txt green.txt blue.txt purple.txt orange.txt

是否有一种创建目录的方法叫:

red/ green/ blue/ purple/ orange/?

我试过了:

for f in *.txt; do mkdir {$f}; done

for f in *.txt; do mkdir {$f}.txt; done

for f in *.txt; do mkdir "$f/"; done

等等等等,它们的变体。我不知道我做错了什么。

【问题讨论】:

  • 你自己的尝试发生了什么?
  • for f in *.txt; do mkdir {$f}; done 给了我名为{blue.txt} {green.txt} {orange.txt} {purple.txt} {red.txt}的目录的结果
  • for f in *.txt; do mkdir {$f}.txt; done 给了我同样的东西,除了在这种情况下的目录被称为{blue.txt}.txt {green.txt}.txt {orange.txt}.txt {purple.txt}.txt {red.txt}.txt
  • for f in *.txt; do mkdir "$f/"; done 只是给了我一条错误消息,每个人都说“这个文件已经存在”

标签: linux for-loop mkdir


【解决方案1】:

这是 bash-only 的处理方式...

for f in *txt; do mkdir ${f%.*}; done

我们在这里使用 bash 的 shell parameter expansion,以防你好奇。

【讨论】:

  • 这正是我想要完成的。谢谢!
猜你喜欢
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多