我已经创建了一个脚本,可以从目录中删除所有零长度文件。
#!/bin/bash
find . -size 0 -type f -exec rm -i '{}' \;
它运行良好,但它只适用于脚本实际所在的目录及其子目录。我希望能够在执行脚本时使用目录作为命令行参数( bash scriptname dirname )并让它只搜索那个目录及其子目录,不是脚本所在的实际目录。有没有办法做到这一点?
答案 0 :(得分:0)
使用$ x,您可以访问bash脚本的第x个命令行参数。所以在你的情况下,这应该像
find $1 -size 0 -type f -exec rm -i '{}' \;
答案 1 :(得分:0)
在Bash中,您可以将参数传递给脚本。这些参数可以使用$ sign。例如:
./hello 123 abc xyz
这里$ 0是你的程序名称 $ 1是123等等
您可以传递值并在程序中使用它们从1美元到9美元。
答案 2 :(得分:0)
如果您的find
版本接受多条路径,则可以传递所有位置参数:
find "$@" -size 0...
注意:您不应该使用$ *作为文件名!它将参数扩展为字符串,因此任何带有空格或新行的文件名都会破坏命令。 “$ @”保留了这些,所以可以安全地使用它。如果find
不接受多个路径,您可以循环遍历以下参数:
for dir in "$@"; do
find "$dir" -size 0...
done