【发布时间】:2018-07-18 22:14:17
【问题描述】:
我制作了一个脚本,它列出了当前目录和子目录中的每个文件,并从该文件的头部和尾部(带有偏移量)给我 md5sum 并将其保存到 .txt 文件中。
我是用管道做的,所以我不能重定向一个变量,这个变量之前已经由用户输入声明过。所以我将脚本更改为 for 循环。 现在的问题:它没有列出所有文件,而只列出一个。它似乎是随机的。为什么它不像以前那样列出所有文件?
我什至尝试过 **.* 和 ./* 等等。我使用的是 macbookpro mac os 10.13.6。我曾经安装过一些东西,所以我也可以使用 linux 命令,例如树等...
感谢任何帮助!我不知道我还能做什么。
未重定向变量的旧代码:
#!/bin/bash
echo Wie heißt die Festplatte?
read varname
echo Los gehts!
before=$(date +%s)
find . \( ! -regex '.*/\..*' \) -type f -exec bash -c 'h=`tail -n +50000 "{}" | head -c 1000 | md5`;\
t=`tail -c 51000 "{}" | head -c 1000 | md5`;\
echo "$varname {} ; $h ; $t"' \;> /Users/Tobias/Desktop/$varname.txt
after=$(date +%s)
echo Das hat: $(((after - $before)/60)) Minuten bzw $(((after - $before))) Sekunden gedauert
新代码,它没有列出所有文件,只列出一个:
#!/bin/bash
echo Wie heißt die Festplatte?
read varname
echo Los gehts!
before=$(date +%s)
for i in $( find . \( ! -regex '.*/\..*' \) -type f ); do
h=$(tail -n +50000 $i | head -c 1000 | md5)
t=$(tail -c 51000 $i | head -c 1000 | md5)
echo "$varname; $i ; $h ; $t" > /Users/Tobias/Desktop/$varname.txt
done
after=$(date +%s)
echo Das hat: $(((after - $before)/60)) Minuten bzw $(((after - $before))) Sekunden gedauert
【问题讨论】:
标签: bash macos variables for-loop find