编写一个 Bash 脚本,将目录名称作为命令行参数,并通过删除在此目录中找到的所有长度为零、扩展名为 .tmp 或扩展名为 .swp 的文件来清理目录。之后,创建该目录的存档,压缩该存档并将其放置在您的〜目录中?
#!/bin/bash
if [ -d $1 ]
then
find -empty -print -exec rm -f {} \;
find . -name "*.tmp" -print -exec rm -f {} \;
find . -name "*.swp" -print -exec rm -f {} \;
tar -zxvf $filename.tar.gz /~/ \;
else
echo "this file is not a directory"
fi
我被困在存档部分,你们能给我一些提示吗!谢谢,祝你有愉快的一天。
答案1
- 如果这是家庭作业,你应该这么说。
- 无论您为其指定什么目录名称,您的脚本都仅搜索当前目录。
- 除非您真正知道自己在做什么,否则
rm -f
用命令编写脚本是一个非常糟糕的主意。find
\;
命令末尾tar
会导致错误。- 根据#4,您似乎对命令
;
中的角色感到困惑find
。它作为参数传递,以告知find
传入命令的结尾在哪里。 - 您的
tar
命令正在尝试从存档中提取,而不是创建存档。 - 你的变量没有被引用。
/~/
shell 不会将其转换为您的主目录名称;仅当~
位于单词开头时才会出现。- 如果操作正确,所有三个
find
命令都可以合并为一个命令。
我确信还有更多;这就是我的想法。在这个网站上浏览一下,您可以学到很多东西。
我们很乐意提供帮助,但这实际上并不是一个“家庭作业帮助”网站。如果您证明这一点,您可能会得到更多帮助你真正想学习,而不仅仅是想完成作业。
答案2
具体回答有关如何目录的问题tar
- 因为您的脚本还存在其他几个问题:
tar -cvzf tarfile.tgz "$1"
将创建一个名为 tarfile.tar 的 gzip 压缩 tar,并将脚本参数中的目录放入其中。