之前就有在查類似指令
但沒有覺得很快速方法
這邊先整理
mac cp –parents
可用這個指令解決我需求問題
但我沒 mac QQ
mkdir -p
平常我快速建置資料夾
mkdir -p dirname /xxxx/xx/x/x/x/x/filename
cp xxx /xxxx/xx/x/x/x/x/filename
但數量越多,這樣做也不會比較快
cp-p SOURCE… DIRECTORY/
1
2
3
4
5
6
7
8
9
10
11
|
cp-p() {
last=${@: -1}
if [[ $# -ge 2 && "$last" == */ ]] ; then
# cp SOURCE... DEST/
mkdir -p "$last" && cp "$@"
else
echo "cp-p: (copy, creating parent dirs)"
echo "cp-p: Usage: cp-p SOURCE... DEST/"
fi
}
|
但這樣改從清單還要多一層處理目的資料夾
我覺得不是很實用
install -D
install -D test1.sh ./xxx/test.sh
但不確定什麼問題,沒選出最佳答案
install 指定清單做複製方法
最近因為專案是用 SVN
但包檔要給客戶需要包成zip
這邊有時候從 SVN 去看目錄手動複製真的很麻煩
尤其還要對 class去做複製
今天寫了好用腳本
Windows 10 直接用 WSL 也可以操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#!/bin/bash
# 包版日期
DAYV="201113"
# 包版版本
VERSION="002"
# 有針對資料夾和檔案都可以做複製
# 萬用字玩也可以
# 找不檔案也不會有問題
SPATHLIST=(
# #SHARE
./web/build/classes/aa
./web/build/classes/aa/
# BATCH
./TEST
./batch/src/com/abc/batch/Aaaaa.java
./batch/src/com/abc/batch/schedule/job/*
# bin, class
./batch/bin/com/abc/batch/Aaaaa.class
)
# install 資料夾複製方法參考
# https://unix.stackexchange.com/questions/165463/problem-with-install-command-to-copy-a-whole-directory
DPATH="/CodePackage/${DAYV}/${VERSION}/${DAYV}_code_package"
length=${#SPATHLIST[@]}
for(( j=0; j<$length; j++ ))
do
if [[ ! -e "${SPATHLIST[$j]}" ]]; then # 檢查檔案 https://linuxize.com/post/bash-check-if-file-exists/
echo "${SPATHLIST[$j]}找不到檔案檔案"
continue
fi
if [[ -d "${SPATHLIST[$j]}" ]]; then
# 加入 exec 印出內容
# https://askubuntu.com/questions/651315/how-do-you-output-the-filename-in-find-command-while-using-exec
find "${SPATHLIST[$j]}" -type f -printf '%p\n' -exec install -D "{}" "${DPATH}/{}" \;
else
install -D ${SPATHLIST[$j]} ${DPATH}/${SPATHLIST[$j]}
fi
echo "${SPATHLIST[$j]} 成功搬移 ${DPATH}/${SPATHLIST[$j]}"
done
cp ./copyfiles.sh ${DPATH}/../copyfiles${DAYV}${VERSION}.sh
# 寫更版紀錄 txt
TXT_FILE="更版紀錄_${DAYV}_${VERSION}.txt"
TXT_FILEPATH=${DPATH}/${TXT_FILE}
echo "<${DAYV}_${VERSION}> #" > ${TXT_FILEPATH}
echo "" >> ${TXT_FILEPATH}
echo "Revision: >>>>>> (Beta${VERSION})" >> ${TXT_FILEPATH}
echo "Author: xxx" >> ${TXT_FILEPATH}
echo "Date: $(date +"%Y年%m月%d日 %T")" >> ${TXT_FILEPATH}
echo "" >> ${TXT_FILEPATH}
echo " #>>>>>>" >> ${TXT_FILEPATH}
echo "" >> ${TXT_FILEPATH}
echo "【問題說明】" >> ${TXT_FILEPATH}
echo " >>>>>>" >> ${TXT_FILEPATH}
echo "【處理說明】" >> ${TXT_FILEPATH}
echo " >>>>>>" >> ${TXT_FILEPATH}
echo " " >> ${TXT_FILEPATH}
echo "" >> ${TXT_FILEPATH}
echo "相關程式如下:" >> ${TXT_FILEPATH}
echo "" >> ${TXT_FILEPATH}
for(( j=0; j<$length; j++ ))
do
let INDEX=$j+1
echo "${INDEX}." "${SPATHLIST[$j]}" >> ${TXT_FILEPATH}
done
# 產生 password txt(為了手動包 zip用的)
# 因為客戶需要更版紀錄,我需要去 Mantis 複製內容再zip
echo "pwd20"${DAYV} > ${DPATH}/../password.txt
|
這樣半自動化,相信能減少很多出錯