有两种类型的文件
-
Book1_20190715_1A.gz,
-
Book1_20190715A.gz,
-
Book2_20190716_1A.gz,
-
Book2_20190716A.gz
这里,2019年是07年是月份;15也是日期16。这里还有两种类型的文件_1A&A.
需要在文件夹中按日期传输。还需要为不同类型的文件传输不同的文件夹,如_1A&A
如果Igrep像*_1A那样,则它传输_1A文件夹,但如果*AWhat I do now. Please Help me.
你的问题不是很清楚,但我认为这就是你想要的:
#!/bin/bash
touch Book1_20190715_1A.gz
touch Book1_20190715A.gz
touch Book2_20190716_1A.gz
touch Book2_20190716A.gz
find . -type f -name "Book*" -print0 | while IFS= read -r -d '' file
do
# Remove "Book1_"
tempdirname=${file#*_}
# Remove ".gz"
dirname=${tempdirname%.*}
echo "$dirname"
if [[ ! -d "$dirname" ]]
then
mkdir "$dirname"
fi
/bin/mv "$file" "$dirname"
done
find
列出所有名为Book*
的文件,并将该列表发送到while
循环- 从文件名中,使用变量展开提取目录名。首先删除";Book1_";,然后移除";。gz";。这给你留下了日期_1A〃;如果有的话
- 如果目录不存在,则创建该目录
- 将文件移动到目录中