根据Linux中的文件数重命名目录

Ton*_*y P 5 regex linux bash rename

我有以下布局:

  • D1
    • F1
    • F2
    • F3
  • D2
    • F4
    • F5
  • D3
    • F6
    • F7
    • F8
    • D4
      • F9

我想要做的是重命名根目录以包含其中包含的(递归)文件的数量.只要不太长,格式就不是非常重要.我希望能够每小时左右以cron的身份运行此脚本来更新目录名称,因此在第一次运行后它将如下所示:

  • 3-D1
    • F1
    • F2
    • F3
  • 2-D2
    • F4
    • F5
  • 4-D3
    • F6
    • F7
    • F8
    • D4
      • F9

然后在第二次运行之后,可能会添加和删除更多文件,现在它看起来像这样:

  • 1-D1
    • F1
  • 4-D2
    • F2
    • F3
    • F4
    • F5
  • 10-D3
    • F6
    • F7
    • F8
    • D4
      • F9
      • F10
      • F11
      • F12
      • F13
      • F14
      • F15

到目前为止,我有以下bash脚本,但我无法弄清楚如何在文件名上进行正则表达式替换

#!/bin/bash

TARGETPATH=/home/pritchea/test
for CURDIR in `ls -l $TARGETPATH`
do
  if [ -d $TARGETPATH/$CURDIR ]; then
    echo "$CURDIR is a directory"
    FILECOUNT=`find $TARGETPATH/$CURDIR -type f | wc -l`
    echo " and there are $FILECOUNT file(s)";
  fi
done
Run Code Online (Sandbox Code Playgroud)

kev*_*kev 3

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 d1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f2\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 f3\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 d2\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f4\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 f5\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 d3\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 d4\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 f9\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f6\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f7\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 f8\n
Run Code Online (Sandbox Code Playgroud)\n\n

在顶层目录运行命令

\n\n
cd /home/pritchea/test\n\nfor i in *\ndo\n    [[ -d $i ]] || continue\n    n=${i#*-}\n    c=$(find "$i" -type f -printf x | wc -c)\n    [[ $i == $c-$n ]] && continue\n    mv -f "$i" "$c-$n"\ndone\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 2-d2\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f4\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 f5\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 3-d1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f2\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 f3\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 4-d3\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 d4\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 f9\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f6\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f7\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 f8\n
Run Code Online (Sandbox Code Playgroud)\n