BASH 复制除一个之外的所有文件

发布于 2024-08-03 00:50:55 字数 69 浏览 6 评论 0原文

我想将除名为 Default.png 的文件之外的所有文件复制到目录之外。似乎有很多方法可以做到这一点。什么对你来说最有效?

I would like to copy all files out of a dir except for one named Default.png. It seems that there are a number of ways to do this. What seems the most effective to you?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

温馨耳语 2024-08-10 00:50:55

应如下所示:

cp -r !(Default.png) /dest

如果复制到嵌套在当前文件夹中的文件夹(在下面的情况下称为示例),您还需要省略该目录:

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

Should be as follows:

cp -r !(Default.png) /dest

If copying to a folder nested in the current folder (called example in the case below) you need to omit that directory also:

cp -r !(Default.png|example) /example
摘星┃星的人 2024-08-10 00:50:55

rsync 长期以来一直是我的 cp/scp 替代品:

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

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

rsync has been my cp/scp replacement for a long time:

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

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose               increase verbosity
九歌凝 2024-08-10 00:50:55

简单,如果 src/ 仅包含文件:

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

如果 src/ 有子目录,则忽略它们,但会复制其中的文件:

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

如果 src/< /code> 有子目录,这不会递归到它们:

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

Simple, if src/ only contains files:

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

If src/ has sub-directories, this omits them, but does copy files inside of them:

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

If src/ has sub-directories, this does not recurse into them:

find src/ -type f -maxdepth 1 ! -name Default.png -exec cp -t dest/ {} +
迟到的我 2024-08-10 00:50:55
cp `ls | grep -v Default.png` destdir
cp `ls | grep -v Default.png` destdir
Smile简单爱 2024-08-10 00:50:55

我会这样做:

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

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

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

I'd just do:

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

unless the files are big. Otherwise use e.g.

find srcdir -type f/ |grep -v Default.png$ |xargs -ILIST cp LIST destdir/
忆悲凉 2024-08-10 00:50:55

2022 年 1 月更新:

这是最简单的方法(并不复杂)。

首先,创建“temp”文件夹

mkdir temp

其次,将所有文件从原始文件夹复制到“temp”文件夹

“-R”标志可以精确复制包括“符号链接”在内的所有文件

cp -R originalFolder/. temp/

第三,从“temp”文件夹中删除“Default.png”

rm temp/Default.png

最后,将“temp”文件夹中的所有文件复制到目标文件夹

cp -R temp/. destinationFolder/

此外,这是没有“temp”文件夹的最短方法:

cp -R originalFolder/!(Default.png) destinationFolder/

Jan, 2022 Update:

This is the easiest way(It's not complicated).

First, make "temp" folder:

mkdir temp

Second, copy all files from your original folder to "temp" folder:

"-R" flag can copy exactly all files including "Symbolic Links"

cp -R originalFolder/. temp/

Third, remove "Default.png" from "temp" folder:

rm temp/Default.png

Finally, copy all files from "temp" folder to your destination folder:

cp -R temp/. destinationFolder/

In addition, this is the shortest way without "temp" folder:

cp -R originalFolder/!(Default.png) destinationFolder/
千仐 2024-08-10 00:50:55

下面的脚本对我有用

cp -r `ls -A | grep -v 'skip folder/file name'` destination

Below script worked for me

cp -r `ls -A | grep -v 'skip folder/file name'` destination
黎歌 2024-08-10 00:50:55
# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude
# chattr +i /files_to_exclude
# cp source destination
# chattr -i /files_to_exclude
别理我 2024-08-10 00:50:55

将 shell 的扩展参数与正则表达式一起使用

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

除了 not_to_copy_file 之外的所有内容都将被复制

--
如果有什么问题。请注明!

use the shell's expansion parameter with regex

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

Everything will be copied except for the not_to_copy_file

--
if something is wrong with this. please Specify !

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文