你可以把一切都放在一個文件,排序,然後使用awk處理它:
# Select all files to move
grep -ircl --exclude=*.{png,jpg,gif,html,jar} '^#\!' /home > list.txt
find /home -type f \(-perm -u+x -o -name "*.sh" \) -print >> list.txt
# Feed them to Awk that will log and move the file
sort list.txt | uniq | awk -v LOGFILE="mylog.txt" '
{ print "Moving " $0 >> LOGFILE
"mv -v --backup \"" $0 "\" /tmp/backup" | getline
print >> LOGFILE }'
編輯:你可以從這個骨架,通過增加一些變量做出正式腳本和一些額外的檢查:
#!/bin/bash
LIST="$(mktemp || exit 1)"
LOG="/tmp/mylog.txt"
SOURCE="/home"
TARGET="/tmp/backup"
mkdir -p "${TARGET}"
cd "${SOURCE}" || exit 1
# Select all files to move
grep -ircl --exclude=*.{png,jpg,gif,html,jar} '^#\!' "${SOURCE}" > "${LIST}"
find "${SOURCE}" -type f \(-perm -u+x -o -name "*.sh" \) -print >> "${LIST}"
# Feed them to Awk that will log and move the file
sort "${LIST}" | uniq | awk -v LOGFILE="${LOG}" -v TARGET="${TARGET}" '
{ print "Moving " $0 >> LOGFILE
"mv -v --backup \"" $0 "\" " TARGET | getline
print >> LOGFILE }'
最好的學習方法是先嚐試一下,然後在卡住時尋求指導。如果您已經嘗試過,請發佈您目前爲止所做的工作,以便其他人可以爲您提供具體和相關的建議。 – 2012-07-20 09:40:40
這是我做了什麼至今 Seraching與#^ grep的-ircl --exclude = * {PNG,JPG,GIF,HTML,罐子} 「^#」/家 查找可執行 查找文件。 -type f -perm +111或find。 -type f -perm -u + x 現在我正在努力如何將這兩個命令分配到最終的輸出,我可以通過它來執行備份並從當前目錄中刪除 – 2012-07-20 09:53:27
請在您的問題中進行編輯。在評論中閱讀代碼很困難。 – 2012-07-20 10:01:24