当前位置: 技术问答>linux和unix
如何用shell获取linux目录下的文件名呢?
来源: 互联网 发布时间:2016-11-24
本文导语: 遇到一个很繁琐的事情,有两个目录a、b,两个文件夹目录里有一些文件的文件名是一样,不过后缀名不同,我想把a文件夹下跟b文件夹里相同文件名的文件覆盖到b去,并删除b里同名而不同后缀的文件,文件很多,我...
遇到一个很繁琐的事情,有两个目录a、b,两个文件夹目录里有一些文件的文件名是一样,不过后缀名不同,我想把a文件夹下跟b文件夹里相同文件名的文件覆盖到b去,并删除b里同名而不同后缀的文件,文件很多,我想用shell来试写这样一个功能,不过本人刚接触shell,还不清除怎么用shell来获取目录下的文件名来进行操作,所以请教一下大家:)
|
FOLDER_A=a
FOLDER_B=b
for file_a in ${FOLDER_A}/*; do
file_a_prefix=${file_a:%.*}
file_prefix=${file_a_prefix:#${FOLDER_A}/*}
rm -f $FOLDER_B/${file_prefix}.*
cp $file_a $FOLDER_B/
done
看懂再用,胡乱就用俺不对后果负责。
FOLDER_B=b
for file_a in ${FOLDER_A}/*; do
file_a_prefix=${file_a:%.*}
file_prefix=${file_a_prefix:#${FOLDER_A}/*}
rm -f $FOLDER_B/${file_prefix}.*
cp $file_a $FOLDER_B/
done
看懂再用,胡乱就用俺不对后果负责。
|
自己思考一下完全能写出来
首先ls得到a文件夹下的所有文件 保存到变量
然后循环该变量 截取变量扩张名之前的文件名 测试b目录是否存在该文件
如果有直接mv覆盖
首先ls得到a文件夹下的所有文件 保存到变量
然后循环该变量 截取变量扩张名之前的文件名 测试b目录是否存在该文件
如果有直接mv覆盖