【问题标题】:Move files according to number in filename根据文件名中的数字移动文件
【发布时间】:2016-09-26 10:03:41
【问题描述】:

我正在尝试根据名称中的数字移动文件夹中的文件。 文件的名称类似于fooNNN_bar.txt 我想像/NNN/fooNNN_bar.txt 一样组织它们

这是我现在所拥有的。它会打印出每个文件必须移动到的文件夹。我不确定如何收集数字以将其添加到 mv 命令中。这甚至是正确的方法吗?

#!/bin/bash
  for filename in foo*.txt; 
  do 
  echo "${filename}" | grep -Eo '[0-9]{1,4}';
done

【问题讨论】:

    标签: shell variables grep mv


    【解决方案1】:

    假设你的 grep 工作如你所愿:

    #!/bin/bash
      for filename in foo*.txt; do 
          num=$(echo "${filename}" | grep -Eo '[0-9]{1,4}')
          mkdir -p "$num"
          mv "$filename" "$num"
    done
    

    【讨论】:

    • 太完美了。谢谢。
    • 不需要回显、管道和 grep:num="${filename//[^0-9]}".
    猜你喜欢
    • 2015-10-09
    • 2021-03-29
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多