我正在尝试创建一个脚本,该脚本将针对变量(这是一个完全限定的文件名)迭代运行命令,并将该命令的结果输出到单独命名的/时间戳文件(达到%S精度)。我对这个东西不太好
这就是我的所作所为:
find /vmfs/volumes/unlistedpathname/unlistedfoldername |
while read list;do
vmkfstools -D "$list" >> duringmigration_10mins_"$list".$(date +"%Y.%m.%d.%H.%M.%S");
done
我希望的输出类似于
duringmigration_10mins_blahblahblah.vmx.2016.09.25.21.26.35
当然它不起作用,我不确定如何解决它。我知道问题完全是$ list,因为filename变量将重新打印完整路径,所以我需要某种方式告诉循环"他们只是使用文件名作为变量而不是完整路径"但我不知道在这种情况下如何做到这一点。我也希望能够从任何非特定路径的位置运行它。
答案 0 :(得分:2)
阻止您正在寻找的行为有两个问题:
我们通过在输出文件名basename
上调用$list
来解决#1。
我们通过在find命令中添加-type f
来解决#2,只返回文件而不是目录。
find /vmfs/volumes/unlistedpathname/unlistedfoldername -type f |
while read list ; do
vmkfstools -D "${list}" >> "duringmigration_10mins_$(basename "${list}").$(date +"%Y.%m.%d.%H.%M.%S")"
done