[英]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
這是最簡單的方法(並不復雜)。
首先,制作“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.