複製文件夾時省略一個特定的嵌套文件夾
我知道如何使用該
cp
命令遞歸地(-r
)複製嵌套文件夾,同時保留(-p
)文件元數據,例如修改時間:cp -pr "/path/from" "path/to"
有沒有辦法按名稱省略嵌套在第一級深處的一個特定文件夾?
例如,
Photos
正在複製一個名為的文件夾。我想跳過Dogs
嵌套在其中的文件夾。我想要所有東西,但不想要/Photos/Dogs
文件夾或其內容。我想我可以讓它複製,然後刪除。但這是低效的。有沒有辦法首先避免文件夾複製。
我目前在 macOS Mojave 上工作,後來在 FreeBSD 12 上工作。
是的,您可以相當輕鬆地製作文件結構的副本,同時避免複製一個或多個子目錄,但您不會使用
cp
.使用
rsync
,您可以使用排除模式排除文件和/或目錄。在您的情況下,您似乎想要使用rsync -av --exclude='Photos/Dogs/' /path/from/ path/to
這將製作
path/to
一個精確的副本,/path/from
同時避免Dogs
在任何路徑匹配處呼叫任何目錄Photos/Dogs
。如果您刪除/
源目錄的尾隨,您將獲得path/to/from
源文件夾的精確副本。使用的排除模式將
rsync
忽略Dogs
位於名為的目錄中的任何子目錄Photos
,例如/path/from/Photos/Dogs
和/path/from/holidays/2013/Photos/Dogs
。Using--exclude=Dogs/
將排除任何呼叫的子目錄,Dogs
而不管它的父目錄是什麼,而 using--exclude=Dogs
將排除任何被呼叫的(無論文件類型如何)Dogs
。要僅匹配直接在 下的Photos/Dogs
目錄,請使用./path/from``--exclude='/Photos/Dogs/'
請參閱系統手冊中名為“包含/排除模式規則”的部分
rsync
。(
-a
)--archive
選項將確保時間戳、權限等也被複製,並啟用遞歸複製。(-v
)--verbose
選項啟用詳細操作。如果您想保留名稱之間的硬連結,請添加
-H
( )(再次參見手冊)。--hard-links``rsync