gpt4 book ai didi

linux - 基于unix "Find"命令获取文件计数结果到变量中

转载 作者:太空狗 更新时间:2023-10-29 11:21:30 25 4
gpt4 key购买 nike

我正在使用以下命令将文件计数的结果放入基于 unix“查找”命令的变量中:条件:今天创建的文件数,扩展名为“tab”且大小大于 0命令:

num_files_nz=$(find $src_file_path -type f -mtime 0 -name "*.tab" -size +0c | wc -l)

echo "Count of non-0KB files=${num_files_nz}"

此命令工作正常并从命令提示符返回计数“4”(这是正确的),但是当我使用相同的命令和 shell 脚本中的目录路径时,计数返回为“0”。我试过按 $src_file_path 中的方式输入目录,然后使用“.”而不是将 $src_file_path 直接放在命令中。我用引号将整个 $(find ...) 表达式括起来。但是没有任何效果,在 shell 脚本中使用时它总是返回 0 计数。

如果有人能帮我解决这个问题,我将不胜感激。

脚本如下:

#export path=/newitest/u01/app/itestcomn/admin/out/itest_eca1db11
#!/usr/bin/ --
request_id=$5
hostname=$6
username=$7
password=$8
email_to=${9}
org_code=${10}
dest_file_path="/$org_code"
RETCODE=0
echo "Main Request ID=$request_id"
echo "hostname=$hostname"
echo "username=$username"
echo "password=$password"
echo "email_to=$email_to"
echo "dest_file_path=$dest_file_path"
echo "org_code=$org_code"
cd $XXKE_TOP/../../keedi/11.5.0/outbound/"$org_code"
src_file_path="$(pwd)"
ls -l
echo "src_file_path=$src_file_path"
#number of files created today, with extension "tab" and size greater than 0
num_files_nz=$(find $src_file_path -type f -mtime 0 -name "*.tab" -size +0c | wc -l)
echo "Count of non-0KB files=${num_files_nz}"

#number of files created today, with name "StockTransfer_Oracle.tab" and size equals 0
num_files_z=$(find $src_file_path -type f -mtime 0 -name "StockTransfer_Oracle.tab" -size 0c | wc -l)
echo "Count of 0KB files=${num_files_z}"

#total file count
num_tot_files=$(expr "$num_files_nz" + "$num_files_z")
echo "Total file count=${num_tot_files}"

if [ "$num_tot_files" -eq 14 ];
then
echo "FTP Start"
ftp -v -n $hostname <<EOF
quote USER $username
quote PASS $password
cd /
cd $dest_file_path
pwd
prompt off
mput *.tab
bye
EOF

else
echo "ERROR GENERATING EXTRACTS"
#Extract files with zero size other than the file "StockTransfer_Oracle.tab"
err_files="$(find $src_file_path -type f -mtime 0 -name "*.tab" ! -name "StockTransfer_Oracle.tab" -size 0c)"
echo "Error Ertracts"
echo "${err_files}"
msg_body="Following $org_code extracts were not completely generated:\n\n$err_files"
echo ${msg_body} | mailx -s "ERROR: Extract File Generation" ${email_to}
fi

我在第 18 行通过“cd”命令进入源目录,我使用的路径与变量 $src_file_path 中的值相同,当我使用“.”时应该访问相同的路径。在查找语句中。我将探索绝对路径,但请尽可能发送一些示例以及可能有助于使 shell 脚本工作的任何其他建议。

此外,当我创建一个“.sh”文件并从命令提示符执行它时,find 命令有效并返回正确的计数,但是当我将它转换为“.prog”并使用并发程序运行它时,该命令返回一个零计数

谢谢阿尼尔

最佳答案

这行不通。

cd $XXKE_TOP/../../keedi/11.5.0/outbound/"$org_code"src_file_path="$(pwd)"

相反,我建议您声明如下,应该修复它:

export src_file_path=$XXKE_TOP/../../keedi/11.5.0/outbound/"$org_code"

关于linux - 基于unix "Find"命令获取文件计数结果到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39968683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com