这是我的第一篇文章,因为我对编程世界完全陌生。基本上,我正在参加 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
.