文件夹重组脚本

Folder restructure script

我有一个包含 .txt,.csv,*.xml 个文件的目录。

原始文件夹结构:/Servicer/*.txt,*.csv,*.xml

文件命名约定如下:

 1. 6573547_BILLING_582524_1_00001.csv
 2. 6573547_BILLING_582524_1_00001.txt
 3. 6573547_BILLING_582524_1_00001.xml
 4. 6573547_BILLING_582524_1_00002.csv
 5. 6573547_BILLING_582524_1_00002.txt
 6. 6573547_BILLING_582524_1_00002.xml
 7. 6573545_BILLING_582524_1_00002.xml
 8. 6573545_BILLING_582524_1_00002.csv

我的要求是创建一个文件夹结构如下,并将文件放在子文件夹中。

所需的文件夹结构:

 /Servicer/6573547/582524_1/*.txt,*.csv,*.xml
 /Servicer/6573545/582524_1/*.txt,*.csv,*.xml

该脚本应该可以在 Windows 和 Linux 环境中执行。

您可以在 BASH 中使用此脚本:

shopt -s extglob
shopt -s nullglob

for f in *.@(csv|xml|txt); do
    IFS=_ read -ra arr <<< "$f"
    p="/Servicer/${arr[0]}/${arr[2]}_${arr[3]}"
    mkdir -p "$p"
    mv "$f" "$p/"
done

谢谢。 我稍微修改了脚本。

shopt -s extglob
shopt -s nullglob
echo Process Started
for f in *.@(csv|xml|txt); do
    IFS=_ read -ra arr <<< "$f"
    p="${arr[0]}/${arr[1]}/${arr[2]}_${arr[3]}"
    mkdir -p "$p"
    cp "$f" "$p/"
        echo File $f is copied to $p
done
echo Process Finished

我希望脚本读取文件夹名称并创建具有该名称的子文件夹,例如: D:\Test\Servicer1\*.csv,*.xml

D:\Test\Servicer2\*.csv,*.xml

现在,如果我在执行时将 "D:\Test\" 作为参数传递,它应该创建如下目录:

\Servicer173547\BILLING2524_1*.csv,*.xml

同时,我正在尝试一个解决方案,如果你能解决这个问题就太好了。