我有一个目录,其中包含(除其他外),一组具有相同扩展名(.ctl)的227个数据文件和数字列出的名称(tmp0001.ctl,tmp0002.ctl,tmp0003.ctl ... tmp0227)。 ctl等)。我想将所有这些数据文件放到它们自己的单独目录中,这些目录以数据文件命名(即folder1,Folder2,Folder3 ... folder227等)。
我知道如何指定只需要.ctl文件,并自动执行该过程
$('.main-nav > li ').click(function(){
$('.site-nav').slideUp()
});
但是后来我不知道如何创建新目录以数字顺序将它们移动到其中。
我应该怎么做?
谢谢!
答案 0 :(得分:3)
如果我正确理解了这个问题,请尝试以下操作:
for file in *.ctl; do
if [[ $file =~ 0*([0-9]+)\.ctl$ ]]; then
mkdir -p -- "folder${BASH_REMATCH[1]}"
mv -- "$file" "$_"
fi
done
BASH_REMATCH
是一个特殊的数组,其中[[ ... =~ ... ]]
中的匹配项被分配给该数组。
答案 1 :(得分:1)
您需要使用一些参数替换。
从循环开始:
for file in *.ctl
do
done
在循环体内,我们需要通过除去后缀和前缀以及前导零来将$file
转换为目录名:
dir=${file%.ctl} # remove suffix
dir=${dir#tmp} # remove prefix
dir=folder$((10#$dir)) # leading zeros; add new prefix
我们通过重新解释为以10为底的数字(通常以0
开头的数字为八进制)来删除前导零。
现在,这很简单
mkdir -p "$dir"
mv "$file" "$dir"