目的1:提取文件夹名称到txt文件
(包括文件夹内文件名称,遍历所有文件夹及子文件夹)
find -name \*> viewname.txt
(单层文件夹)
Folder_A="/home/Neo/shell/gotfilename/bin"
Output_file="output.txt"
#这里用于清空原本的输出文件
: > $Output_file
for file in ${Folder_A}/*
do
echo $file>> $Output_file
done
(不包括文件夹内文件名称)
find -type d -name \*> name.txt
使用find时提示: 路径必须在表达式之前 :
如果目标文件开头用通配符’*’表示,则需转义。’*’前加’\’即可。
参考:https://blog.csdn.net/u011068838/article/details/14002561
目的2:按照标号重命名文件
仅包含1层文件夹内文件
i=1;
for x in *;
do mv $x $i.png;
let i=i+1;
done
遍历文件夹
此处参考
shell脚本函数编写方法:https://www.cnblogs.com/-beyond/p/8280208.html
递归目录并修改文件名:https://blog.csdn.net/keheinash/article/details/51863587
代码:
#!bin/sh
i=1;
function travFolder(){
#echo "travFolder"
flist=`ls $1`
cd $1
#echo $flist
for f in $flist
do
if test -d $f
then
#echo "dir:$f"
travFolder $f
else
#echo "file:$f"
echo ${f##*.}
if [ "${f##*.}"x == "bmp"x ]
then
mv $f $i.bmp;
let i=i+1;
fi
fi
done
cd ../
}
travFolder ./
其中
if [ "${f##*.}"x == "bmp"x ]
是判断其后缀名,注意的几点:
1、if和[ ]之间要空格。
2、[ ]和“ ”之间要空格
3、“ ”和=之间要空格,
否则都会报错
运行脚本
chmod +x changename.sh
./changename.sh
一些脚本注意事项: 第一行要空一行,否则会提示文件不存在之类的问题
当前运行运行的文件路径一定要注意。cd ../ 返回上层路径。