此代码在上述日期之后搜索并递归复制文件。
userPlaces.append(["name":"Schule", "subname":"Wien", "lat":"48.203015", "lon":"16.374419" ])
答案 0 :(得分:5)
尝试以下方法:
#!/usr/bin/env bash
directory=~/'somefolder'
DAYSAGO=8
find "$directory" -mtime -$(( DAYSAGO + 1 )) -type f -exec cp -t ~/'The other folder'/ {} +
-
作为-mtime
参数的前缀,将 less-than 逻辑应用于参数值。 所有采用数字参数的 find
测试都支持此逻辑(及其对应的+
,用于多于逻辑)。 提示miracle 173。
<= $DAYSAGO
,因此使用算术扩展(1
)添加$(( ... ))
,以实现所需的逻辑(不用说,$DAYSAGO
可能是重新定义时考虑到逻辑小于9
,以便不必进行算术扩展。将-exec
与+
终结符一起使用(通常)所有匹配文件名一次调用指定的命令,这是比套管回路更有效率。
{}
是匹配文件名列表的占位符,请注意,对于+
,必须 参数在+
终结符之前(相比之下,使用invoke-once-for-每个匹配文件终止符\;
,{}
可以放在任何地方)
cp
选项的-t
实现,这允许将目标目录放在,特别是 GNU <相反,/ em> cp
(BSD / OSX cp
和POSIX规范不支持-t
。)另请注意引用中的更改:
directory=~/'somefolder'
:单引号文字somefolder
- 虽然在这种特殊情况下并非绝对必要 - 确保附带的名称即使包含嵌入的空格或其他shell元字符也能正常工作。
~/
部分必须 DIR。 ~
:对引用引用进行双引号确保它的值不会被shell进一步解释,从而可以安全地使用具有嵌入空格和其他shell元字符的路径。
"$directory"
为~/'The other folder'/
提供了更清晰的替代方式(并且也更容易打字),展示了与上述相同的未引用和引用部分组合。
答案 1 :(得分:1)
根本不需要while
循环。使用它会让您遇到一些极端情况的问题,例如包含换行符和其他空格的文件名。只需使用-exec
主要内容。
find "$directory" -mtime "$a" -type f -exec cp {} -t ~/The\ other\ folder/ \;
更新:尽管使用mklement0's answer;它的效率更高。