1
52
在巴什:
|
2
13
Magnus解决方案的唯一问题是,它为每个文件分叉一个新的“cp”过程,这并不是非常有效,尤其是在有大量文件的情况下。 在Linux(或其他具有GNU coreutils的系统)上,您可以执行以下操作:
(当文件名中包含奇怪的字符(如空格)时,-0允许它工作。) 不幸的是,我认为Mac附带了BSD风格的工具。有人知道相当于“-t”开关的“标准”吗? |
3
11
上面的答案不允许名称冲突,因为询问者不介意文件被过度写入。 我不介意文件写得太多,所以想出了一个不同的方法。将路径中的每个/替换为-保留名称中的层次结构,并将所有文件放在一个平面文件夹中。 我们使用find获取所有文件的列表,然后awk使用原始文件名和修改后的文件名创建一个mv命令,然后将这些文件传递给bash执行。
其中,/from和./to是从和到mv的目录。 |
4
3
如果您真的只想运行一个命令,为什么不先运行一个命令并运行它呢?像这样:
但是,如果您不经常这样做或者拥有大量的文件,那么从性能上讲,这就不重要了。不过,要小心名称合谋。我在测试中注意到GNUCP至少会警告碰撞:
我认为最干净的是:
要记住的语法比-exec选项少。 |
5
1
至于一个freebsd盒子上的cp的手册页,不需要-t开关。如果传递的名称超过两个,则cp将假定命令行上的最后一个参数为目标目录。 |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
g00dds · 如何在bash中从文件中的每一行解码base64? 2 年前 |
Paul · Bash wait命令忽略指定的进程ID 2 年前 |
RafaÅ G. · 如何使用从文件读取的多行参数运行ssh? 2 年前 |
Priya · 在shell脚本中多次运行python脚本 2 年前 |