![]() |
1
52
在bash中:
|
![]() |
2
13
Magnus解决方案的唯一问题是,它为每个文件分叉一个新的“cp”进程,这不是非常有效,特别是在有大量文件的情况下。 在Linux(或其他使用GNU coreutils的系统)上,您可以执行以下操作:
(当文件名中有奇怪的字符(如空格)时,-0允许它工作。) 不幸的是,我认为Mac附带了BSD风格的工具。有人知道一个相当于“-t”开关的“标准”吗? |
![]() |
3
11
上面的答案不允许名称冲突,因为提问者不介意文件被重写。 我确实介意文件被重写,所以想出了一种不同的方法。将路径中的每个/替换为-保持名称中的层次结构,并将所有文件放在一个平面文件夹中。 我们使用find获取所有文件的列表,然后使用awk创建一个包含原始文件名和修改后的文件名的mv命令,然后将这些文件传递给bash执行。
哪里。/从和。/to是mv from和to的目录。 |
![]() |
4
3
如果你真的只想运行一个命令,为什么不运行一个呢?像这样:
但这在性能方面并不重要,除非你经常这样做或有大量文件。不过,要小心名称勾结。我在测试中注意到GNU cp至少会警告冲突:
我认为最干净的是:
要记住的语法比-exec选项少。 |
![]() |
5
1
就FreeBSD上cp的手册页而言,不需要-t开关。如果传递了两个以上的名称,cp将假设命令行上的最后一个参数是目标目录。 |
![]() |
Plankt0n · Shell,执行一个需要逐一遍历多个值的命令 8 月前 |
![]() |
Fin · 如何使用bash从表中提取数据 8 月前 |
![]() |
aenagy · Bash声明不喜欢带空格的值 8 月前 |
![]() |
PkDrew · AND运算符“&”在“&tee”中的作用是什么? 9 月前 |
![]() |
elbarna · 正则表达式仅排除小写字符串,但保存包含大写的字符串 9 月前 |
![]() |
Harry · 使用“$!”获取后台作业的pid 9 月前 |
![]() |
nmr · 使用来自另一个shell脚本的if语句的返回码函数 9 月前 |
![]() |
minseong · Git sed忽略二进制文件 1 年前 |
![]() |
Jesper.Lindberg · 检查参数是否包含null 1 年前 |