Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash for循环中的find命令未列出所有文件_Bash_Macos_Variables_For Loop_Find - Fatal编程技术网

Bash for循环中的find命令未列出所有文件

Bash for循环中的find命令未列出所有文件,bash,macos,variables,for-loop,find,Bash,Macos,Variables,For Loop,Find,我制作了一个脚本,它列出了当前目录和子目录中的每个单个文件,并从该文件的头和尾(带偏移量)中给出md5sum,然后将其保存到一个.txt文件中 我是用管道做的,所以我无法重定向一个变量,这个变量以前是由userinput声明的。所以我把脚本改为for循环。 现在的问题是:它没有列出所有的文件,但只列出一个。这似乎是随机的。为什么不像以前那样列出所有的文件 我甚至试过**.*和./*等等。我使用macbookpro MacOS 10.13.6。我曾经安装过一些东西,这样我就可以使用linux命令,

我制作了一个脚本,它列出了当前目录和子目录中的每个单个文件,并从该文件的头和尾(带偏移量)中给出md5sum,然后将其保存到一个.txt文件中

我是用管道做的,所以我无法重定向一个变量,这个变量以前是由userinput声明的。所以我把脚本改为for循环。 现在的问题是:它没有列出所有的文件,但只列出一个。这似乎是随机的。为什么不像以前那样列出所有的文件

我甚至试过**.*和./*等等。我使用macbookpro MacOS 10.13.6。我曾经安装过一些东西,这样我就可以使用linux命令,比如tree等等

感谢您的帮助!我不知道我能做什么

未重定向变量的旧代码: 新代码,其中不列出所有文件,只列出一个:
您在循环的每次迭代中都会覆盖该文件。改为使用附加模式:

echo "$varname; $i ; $h ; $t" >> /Users/Tobias/Desktop/"$varname".txt
#                             ~~
或重定向整个循环的输出:

    echo "$varname; $i ; $h ; $t"
done  > /Users/Tobias/Desktop/"$varname".txt

重定向整个循环的输出,而不是每次都覆盖文件的每个
echo
语句

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"
done > /Users/Tobias/Desktop/$varname.txt

不幸的是,这两个变体都提供了空的txt文件,但将循环的输出打印到shell中。然后,shell严重损坏。
    echo "$varname; $i ; $h ; $t"
done  > /Users/Tobias/Desktop/"$varname".txt
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"
done > /Users/Tobias/Desktop/$varname.txt