ใน linux find
นั้นทรงพลังจริงๆ
คุณสามารถใช้ได้
OutDir="${BUILD_DIR}/include/header/cocos/" # Linux is case sensitive, Check if
mkdir -p "${OutDir}" # it is needed Cocos or cocos...
cd ./Frameworks/Cocos # just to have clean path to create
# Here with only one line
find . -name "*.h" -exec bash -c 'cp -p --parents {} "${OutDir}" ' \;
# cd - # Eventually to come back to the previous path
หมายเหตุ:
cp -p
สงวนสิทธิ์การเป็นเจ้าของ ...
cp --parents
สร้างปลายทางปลายทาง แต่ต้องการไดเรกทอรีฐานที่มีอยู่
mkdir -p
สร้างไดเรกทอรีพร้อมเส้นทางพาเรนต์ทั้งหมดโดยไม่มีข้อผิดพลาดหากมีอยู่
man find
สำหรับตัวเลือกการค้นหาทั้งหมด
หากคุณต้องการอยู่ใกล้กับสคริปต์ก่อนหน้า
cd "${SRCROOT}"
echo 'Copying Cocos Headers into Framework..'
StartSearchDir="${SRCROOT}../Frameworks/Cocos"
BaseDestDir="${BUILD_DIR}/include/header/cocos/"
cd $StartSearchDir
for H in `find . -name "*.h"`; do
echo "${H}"
PathFileDir=$(dirname $H)
mkdir -p "${BUILD_DIR}/${PathFileDir}" # no error, make parents too
cp -p "$H" "${BUILD_DIR}/${PathFileDir}/" # preserve ownership...
# ditto -V "${H}" "${BUILD_DIR}/include/header/cocos/" # commented line
done
หมายเหตุด้วยdirname
คุณสามารถแยกจากสตริงแบบเต็ม + ชื่อไฟล์สตริงเส้นทางเท่านั้น
ตรวจสอบความช่วยเหลือด้วยman dirname
และman basename