![]() |
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将假设命令行上的最后一个参数是目标目录。 |
![]() |
sk123 · Shell脚本-如何在循环中显示变量名及其值 1 年前 |
|
sai · unix中使用python进行数据重组 1 年前 |
![]() |
FangQ · 如何使用jq打印由制表符“\t”分隔的JSON数组元素 1 年前 |
|
ROHAN · 我想显示包含一个括号的行,包括它的开头或结尾 1 年前 |
![]() |
Geomicro · 删除模式sed之间的逗号 1 年前 |