使用迭代 filename/timestamp 从 while read 循环输出
output from while read loop using iterative filename/timestamp
我正在尝试创建一个脚本,该脚本将针对变量(这是一个完全限定的文件名)迭代 运行 一个命令,并将该命令的结果输出到一个单独的 named/timestamped 文件(到 %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 上,因为文件名变量会重新打印完整路径,所以我需要某种方式来告诉循环 "hey just use the filename as the variable NOT the full path" 但我不确定在这种情况下该怎么做。我也希望能够 运行 从任何位置而不是特定路径。
有两个问题阻止了您正在寻找的行为:
- 如您所见,由 find return编辑的文件名包括完整路径。
- 您的查找命令将return所有文件和目录名称。
我们通过在输出文件名中的 $list
上调用 basename
来解决 #1。
我们通过将 -type f
添加到仅 return 文件而不是目录的查找命令来解决 #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
我正在尝试创建一个脚本,该脚本将针对变量(这是一个完全限定的文件名)迭代 运行 一个命令,并将该命令的结果输出到一个单独的 named/timestamped 文件(到 %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 上,因为文件名变量会重新打印完整路径,所以我需要某种方式来告诉循环 "hey just use the filename as the variable NOT the full path" 但我不确定在这种情况下该怎么做。我也希望能够 运行 从任何位置而不是特定路径。
有两个问题阻止了您正在寻找的行为:
- 如您所见,由 find return编辑的文件名包括完整路径。
- 您的查找命令将return所有文件和目录名称。
我们通过在输出文件名中的 $list
上调用 basename
来解决 #1。
我们通过将 -type f
添加到仅 return 文件而不是目录的查找命令来解决 #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