实用shell脚本
某个文件夹下面有100个二级文件夹,每个二级文件夹里有多个文件。将所有二级文件夹里的文件,挪动到一级文件夹
mv.sh:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21!/bin/bash
files=$(ls)
for i in $files; do
if [[ -d $i ]]; then
echo "当前文件夹为:" $i
#统计当前文件夹下的文件个数,如果不为空文件夹,执行移动操作 https://www.bbsmax.com/A/kjdwwDnEdN/
#count=$(ls -l |grep "^-"|wc -l )
count=$(find $i -type f | wc -l )
echo "当前文件夹下文件数量为:" $count
# https://www.runoob.com/linux/linux-shell-process-control.html
if (($count >0));then
mv $i/* ./
fi
fi
done
以上代码有个bug,当文件夹名称中包含空格时,在第一步files=$(ls)
时,会根据空格将一个文件夹拆成多个..之后显然找不到被分割后的文件夹
所以需要先做一步操作,将文件夹名称中的空格去除,或用其他符号替换掉
brew install rename
1 | #将当前文件夹内所有文件的名字中得所有空格替换为_。其中g代表所有,如果不加g,如果文件名字中有多个空格,仅替换第一个 |
所以最终脚本为
1 |
|
原文作者: fliter
原文链接:
http://www.dashen.tech/2022/07/07/实用shell脚本/版权声明: 转载请注明出处