![](/img/trans.png)
[英]'find' all .log files under a directory, copy them to another directory named after their parent directory?
[英]BASH: Copy all files and directories into another directory in the same parent directory
我試圖做一個簡單的腳本復制了所有我的$HOME
到另一個文件夾$HOME
稱為Backup/
。 這包括所有隱藏的文件和文件夾,並且不包括Backup/
本身。 我現在要復制的部分如下:
shopt -s dotglob
for file in $HOME/*
do
cp -r $file $HOME/Backup/
done
Bash告訴我它無法將Backup/
復制到其自身中。 但是,當我檢查$HOME/Backup/
的內容時,我看到$HOME/Backup/Backup/
存在。
Backup/
本身的副本是沒有用的。 我如何獲得bash來復制除Backup/
以外的所有文件夾。 我嘗試使用extglob
並使用cp -r $HOME/!(Backup)/
但是它沒有復制我需要的隱藏文件。
嘗試rsync。 您可以排除文件/目錄。
這是一個很好的參考
http://www.maclife.com/article/columns/terminal_101_using_rsync_locally
雨果
這樣的腳本是好的,但是您可以嘗試執行以下操作:
cp -r *備份/; cp -r。*備份/;
備份使用的另一個工具是tar。 這樣可以壓縮備份以節省磁盤空間。
另請注意,*並不覆蓋。 隱藏文件。
我同意使用rsync
是更好的解決方案,但是有一種簡單的方法可以跳過bash
的目錄:
for file in "$HOME/"*
do
[[ $file = $HOME/Backup ]] && continue
cp -r "$file" "$HOME/Backup/"
done
這不會直接回答您的問題(其他答案已經做到了),但是當您想使用cp進行備份時,請嘗試cp -ua
。 這將遞歸目錄,復制而不是跟隨鏈接,保留權限,並且僅在文件比目標副本新時復制文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.