这个脚本是我的导师写的,但我不明白。 有人可以向我解释一下。
#!/bin/bash
find $1 -size +${2}c -size -${3}c
此脚本假设接受三个命令行参数:目录名,最小文件大小(以字节为单位)和最大文件大小(以字节为单位)。因此,在运行它时,它将是这样的:
./script.sh /home/Desktop/file 5000 10000
然后5000到10000之间的文件大小将回显到屏幕上。
任何人都知道另一种方式吗?
答案 0 :(得分:2)
#!/bin/bash
find $1 -size +${2}c -size -${3}c
|___| |_____| |_____|
| | |
This is the This is This is the
first argument the second third argument
passed while argument
running the
script
find
实用程序语法是在specified path
搜索可根据所选options
识别的文件。
-size n[ckMGTP]
True if the file's size, rounded up, in 512-byte blocks is n.
If n is followed by a c, then the primary is true if the
file's size is n bytes (characters).
在+
前面使用second argument
表示我们正在查找文件greater
,然后查找指定的数字。同样-
表示要显示的文件应小于指定的大小。
通过向您的脚本传递三个参数,意味着我们将$1
作为要搜索的路径,在您的情况下为/home/Desktop/file
。第二个参数定义了文件应该大于指定参数5000
的条件。最后一个参数用于指定文件应小于指定的大小10000
。
希望这有帮助!
答案 1 :(得分:0)
这个脚本按照老师的说法运行。
错误"find: Invalid argument +c to -size.
是因为您没有通知脚本的第二个参数。然后$ {2}没有值,脚本尝试执行:
find your_path -size +$c -size -$c
您可以修改脚本以check for number or arguments:
#!/bin/bash
EXPECTED_ARGS=3
E_BADARGS=65
HLP_ARG="path min_size max_size"
if [ $# -ne $EXPECTED_ARGS ]
then
echo "Usage: `basename $0` $HLP_ARG"
exit $E_BADARGS
fi
find $1 -size +${2}c -size -${3}c