您好,感謝您的高級幫助。我正在嘗試完成一個簡單的檢查,以查看文件夾是否包含任何以.log結尾的文件。如果它包含任何以.log結尾的文件,只需將其複製到另一個文件夾即可。我確實嘗試過類似於檢查日誌文件的文件夾
if [ -f /path/to/log/*.log ]; then cp -a /path/to/log /path/to/backup/folder; fi
但是,這並沒有給我足夠清潔的工作。
非常感謝
您好,感謝您的高級幫助。我正在嘗試完成一個簡單的檢查,以查看文件夾是否包含任何以.log結尾的文件。如果它包含任何以.log結尾的文件,只需將其複製到另一個文件夾即可。我確實嘗試過類似於檢查日誌文件的文件夾
if [ -f /path/to/log/*.log ]; then cp -a /path/to/log /path/to/backup/folder; fi
但是,這並沒有給我足夠清潔的工作。
非常感謝
你並不需要先檢查一下,剛纔複製的文件:
cp /path/to/log/*.log /path/to/backup/folder
你可以使用一個bash數組:
shopt -s nullglob # Expand to the empty string if no files are found
logfiles=(/path/to/log/*.log)
cp -a "${logfiles[@]}" /path/to/backup/
還是一個POSIXLY_STRICT方法:
cpIfExists() {
if [ -f "$1" ]; then
cp "[email protected]"
fi
}
cpIfExists /path/to/log/*.log /path/to/backup/
這正是我所期待的。我可以將它放在腳本的頂部,並在需要的地方使用它。我也可以更改源路徑和目標路徑,這也適用於其他文件擴展名。非常感謝你! – needtoknow
如果您會這麼友善,我需要對此進行修改。如果文件存在,我想複製並重命名lofgile。新名稱將是本地服務器時間。 例如 LOCAL_TIME = 「'日期+」 %H-%M-%S 「'」 cpIfExists(){ 如果[-f 「$ 1」];然後 CP 「$ @」 網絡 } cpIfExists /path/to/log/*.log /path/to/dated-today-folder/backup/16-26-23-THEORIGINALNAME.log 太感謝很多 – needtoknow
附近沒有任何測試,這工作是肯定的,但它應該:
for log in `ls /path/to/log | grep .log`; do
cp /path/to/log/$log /path/to/backup/folder/
done
非常感謝您的先生。我也可以在同一個腳本的其他區域使用它。我很欣賞這個。 – needtoknow
如果找不到文件,這將導致一個錯誤的CP會嘗試複製命名爲不存在的文件'/路徑/到/日誌/ *。日誌',除非'nullglob'被啓用。 – kojiro
我想這可能是一個問題,如果你想做的不僅僅是複製文件,例如,測試是否有任何文件被複制。 – acfrancis