文件夹重组脚本
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
同时,我正在尝试一个解决方案,如果你能解决这个问题就太好了。
我有一个包含 .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
同时,我正在尝试一个解决方案,如果你能解决这个问题就太好了。