为每个具有特定扩展名的文件创建目录时:

    $ ls
    a.ttt  b.ttt  c.ttt  d.ttt  e.ttt
    $ mkdir $(ls *.ttt | cut -f 1 -d ".")
    $ ls
    a  a.ttt  b  b.ttt  c  c.ttt  d  d.ttt  e  e.ttt

...一切正常。但是,如果我对.tex文件执行此操作,则会得到以下结果:
    $ ls
    a.tex  b.tex  c.tex  d.tex  e.tex
    $ mkdir $(ls *.tex | cut -f 1 -d ".")
    $ ls
    ?[00;32mb  ?[00;32mc  ?[00;32md  ?[00;32me  ?[0m?[00;32ma  a.tex  b.tex  c.tex  d.tex  e.tex

我只是想清理我的 latex 目录,却得到了奇怪的目录名。为什么会这样以及如何使其起作用?

最佳答案

像这样使用ls的输出很容易出错。

您可以使用:

# grab all *.tex files in an array
arr=(*.tex)

# replace part after DOT and create directories
mkdir -p "${arr[@]//.*}"

10-06 16:11
查看更多