发现:缺少“-exec”参数

发现:缺少“-exec”参数

这是我的第一篇文章,因为我对编程世界完全陌生。基本上,我正在参加 UNIX 课程,并且有一项作业要求我检查主目录中常规文件的大小,以查找大于或等于 1KB 的文件大小,然后将它们备份到压缩文件。我必须对压缩文件使用扩展名 .bak,然后将其清除。到目前为止我有这个:

find . -maxdepth 1 -type f -size +1k -exec gzip -k -S.bak'{}'\;-exec cp'lab4.bak'/IFT383ss16/Labs/ \;   
find: paths must precede expression  
Usage: find [-H] [-L] [-P] [path...] [expression]

想看看我是否可以在这里得到一些帮助,也许有一些建议?

答案1

在我看来,你对空格字符似乎很吝啬。

{}在 之前、在 之前、之后以及之后都需要\;一个空格。两者都不需要单引号。cp'lab4.bak'{}

第二个-exec ...应该是-exec cp {}.bak /IFT383ss16/Labs/ \;

尝试这个:

find . -maxdepth 1 -type f -size +1k \
    -exec gzip -k -S.bak {} \; \
    -exec cp {}.bak /IFT383ss16/Labs/ \;   

这些都可以放在一行上。我\在前两行末尾使用了 s,以使其更具可读性(shell 会将以 a 作为最后一个非空格字符的行读为下一行的继续)。如果您删除行尾的s 并自行连接行,则\在一行上的效果相同。\

顺便说一句,您想复制 .bak 文件还是移动它们?也许使用mv而不是cp.

相关内容