linux - cp時間指定 - shell cp




如何使用'cp'命令排除特定目錄? (12)

rsync是快速和容易的:

rsync -av --progress sourcefolder /destinationfolder --exclude thefoldertoexclude

您可以使用 - --exclude倍數。

你也可以添加-n進行空運行,看看在執行實際操作之前要復制的內容,如果一切正常,請從命令行中刪除-n

我想複製除特定子目錄中的某些文件之外的所有文件。 我注意到'cp'命令沒有--exclude選項。 那麼,我怎麼能做到這一點?


rsync的

rsync -r --verbose --exclude 'exclude_pattern' ./* /to/where/

首先用-n選項嘗試看看將要復制的內容


一種只用cp的方法,更像是一種解決方法,而不是確切的答案

一個。 用於刪除日誌文件

cp _R srcdir targetdir
rm -rf *.log

灣 對於文件夾

cp _R srcdir targetdir
rm -rf targetdir/dirtoremove

如果你有權訪問目標目錄(我假設你有可以在那裡複製)


一種方法是使用find -0-prune來查找所有要移動的文件和目錄,然後使用xargs -0來複製每個文件和目錄。


只要把它暫時移到一個隱藏的目錄中(如果想要的話,可以重命名它)。

mkdir .hiddendir
cp * .hiddendir -R
mv .hiddendir realdirname

它與源目錄相關。
這將排除目錄source/.git被複製。

rsync -r --exclude '.git' source target

我假設你使用bash或破折號。 這會工作嗎?

shopt -s extglob  # sets extended pattern matching options in the bash shell
cp $(ls -laR !(subdir/file1|file2|subdir2/file3)) destination

做一個ls,排除你不想要的文件,並用它作為cp的第一個參數


我發現的最簡單的方法是,只需在圓括號中添加它們的名稱即可複制除文件和文件夾以外的所有文件:

cp -r !(Filename1 | FoldernameX | Filename2) Dest/

為什麼使用rsync時候可以這樣做:

find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'

這假設目標目錄結構與源的相同。


這是對Linus Kleen答案的修改。 他的回答對我不起作用,因為會有一個。 添加在cp不喜歡的文件路徑前(路徑看起來像source / .destination / file)。

這個命令為我工作:

find . -type f -not -path '*/exlude-path/*' -exec cp --parents '{}' '/destination/' \;

--parents命令保留目錄結構。


cp -r `ls -A | grep -v "c"` $HOME/

cp -rv `ls -A | grep -vE "dirToExclude|targetDir"` targetDir

編輯:忘記排除目標路徑(否則它會遞歸複製)。





cp