根据我对这个问题的假设和理解,你可能可以通过多种方式来做到这一点。
一种方法是,如果您确切知道要在哪个目录中查找哈希匹配,那么您可以只传递哈希,然后检查该目录中的文件。所以基本上你正在做的是这样的:
myHash="$1"
[[ $(sha256sum fileName | awk {'print $1'}) == "$myHash" ]] && echo "File found"
Run Code Online (Sandbox Code Playgroud)
使用 for 循环简化此过程:
checkHash(){
myHash="$1" ## The hash of the file that you want to find
if (( $# == 1 )); then ## Must pass at least one argument
## Checking each file in the pwd
for X in *; do
if [[ -f $X ]]; then
local hash=$( sha256sum $X | awk '{print $1}' )
[[ "$myHash" == "$hash" ]] && {
echo "Hash matches for $X";
}
fi
done
fi
}
checkHash "$@"
Run Code Online (Sandbox Code Playgroud)
但是,这不会扫描任何以点开头的文件的哈希值。
另一种方法是使用xargs和find命令。
正如@MelcomX用命令指出的find那样,您可以在一行中完成它,但是可能需要很长时间。这个解决方案的好处是,您可以传递部分哈希值,并且它仍然可以工作,因为它正在grep运行。
find / -exec sha512sum {} + | grep YOURHASHHERE
Run Code Online (Sandbox Code Playgroud)
如果这不是您想要的,请按照@Eliah Kagan在评论中建议的方式详细说明您的问题,以便我们能够理解您正在寻找的内容,或者考虑接受答案。
| 归档时间: |
|
| 查看次数: |
3841 次 |
| 最近记录: |