mkdir 在 *.tex 文件上与 cut 一起使用时会生成错误的目录名称

mkdir makes wrong directory names when used with cut on *.tex files

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

    $ 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[@]//.*}"