簡體   English   中英

BASH 復制除一個文件以外的所有文件

[英]BASH copy all files except one

我想從一個目錄中復制所有文件,除了一個名為 Default.png 的文件。 似乎有很多方法可以做到這一點。 什么對你來說最有效?

應該如下:

cp -r !(Default.png) /dest

如果復制到嵌套在當前文件夾中的文件夾(在下面的情況下稱為示例),您還需要省略該目錄:

cp -r !(Default.png|example) /example

rsync 長期以來一直是我的 cp/scp 替代品:

rsync -av from/ to/ --exclude=Default.png

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose               increase verbosity

很簡單,如果src/只包含文件:

find src/ ! -name Default.png -exec cp -t dest/ {} +

如果src/有子目錄,這會忽略它們,但會復制其中的文件:

find src/ -type f ! -name Default.png -exec cp -t dest/ {} +

如果src/有子目錄,這不會遞歸到它們:

find src/ -type f -maxdepth 1 ! -name Default.png -exec cp -t dest/ {} +

我只會做:

cp srcdir/* destdir/ ; rm destdir/Default.png

除非文件很大。 否則使用例如

find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/
cp `ls | grep -v Default.png` destdir

2022 年 1 月更新:

這是最簡單的方法(並不復雜)。

首先,制作“temp”文件夾

mkdir temp

其次,將原始文件夾中的所有文件復制到“temp”文件夾

“-R”標志可以復制包括“符號鏈接”在內的所有文件

cp -R originalFolder/. temp/

第三,從“temp”文件夾中刪除“Default.png”

rm temp/Default.png

最后,將所有文件從“temp”文件夾復制到您的目標文件夾

cp -R temp/. destinationFolder/

下面的腳本對我有用

cp -r `ls -A | grep -v 'skip folder/file name'` destination
# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude

這非常適合復制除節點模塊以外的所有內容:)享受和那就是上面的答案。 Rsync => CP,因為你可以看到進展......

rsync -av from / to / --exclude = node_modules

將 shell 的擴展參數與正則表達式一起使用

cp /<path>/[^not_to_copy_file]* .

除了 not_to_copy_file 之外的所有內容都將被復制

——如果這有什么問題的話。 請明確說明 !

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM