分享下最近遇到的一个场景:需要将众多文件夹下面的一个配置文件拷贝出来,其他文件一概不需要。需要处理的文件夹太多了,就顺便巩固了下SHELL脚本。
#!/bin/bash
if [ $# != 3 ]; then
echo "error,please input sourceFolder, targetFolder and designated FILENAME"
echo "eg: ./cpFolderWithDesignatedFile /opt/work/test/ /opt/work/targetFolder/ config.xml"
exit 1;
fi
SOURCE_FOLDER=$1
TARGET_FOLDER=$2
DESIGNATED_FILENAME=$3
currentPath=`pwd`
echo "sourceFolder:"$SOURCE_FOLDER
echo "targetFolder:"$TARGET_FOLDER
echo "designatedFile:"$DESIGNATED_FILENAME
function cpFiles()
{
FOLDERS=`ls $SOURCE_FOLDER`
for folder in $FOLDERS
do
if [ -d $SOURCE_FOLDER"/"$folder ]; then
echo "SOURCE_FOLDER exit "$folder
sourceFile=$SOURCE_FOLDER"/"$folder"/"$DESIGNATED_FILENAME
echo $sourceFile
if [ -f $sourceFile ]
then
echo $DESIGNATED_FILENAME " SOURCE_FOLDER exit in "$folder
ls $SOURCE_FOLDER"/"$folder"/"$DESIGNATED_FILENAME
if [ ! -d $TARGET_FOLDER"/"$folder ]; then
mkdir -p $TARGET_FOLDER"/"$folder/
fi
cp -p $SOURCE_FOLDER"/"$folder"/"$DESIGNATED_FILENAME $TARGET_FOLDER"/"$folder/
fi
fi
done
}
if [ ! -d $SOURCE_FOLDER ]
then
echo "error:SOURCE_FOLDER not exit"
exit 1;
fi
if [ ! -d $TARGET_FOLDER ]
then
mkdir -p $TARGET_FOLDER
fi
cd $SOURCE_FOLDER
cpFiles
用法:
./cpFolderWithDesignatedFile 【源文件夹路径】【目标文件夹路径】 【需要拷贝的文件名】
完美搞定!