有人可以向我解释为什么当我在下面的脚本中打印 $file_name 变量时,它是否显示位置而不仅仅是文件名?这不一定是坏事,因为我正努力尝试分别打印位置、md5sum 和文件名,但此时我很困惑为什么要打印位置。
这是文本文件:
day19-pgm-am_0946-23_p1_13.mov
day19-pgm-am_0951-23_p1_14.mov
day19-pgm-am_1016-23_p1_19.mov
day19-pgm-am_1021-23_p1_20.mov
day19-pgm-am_1111-23_p1_30.mov
.
#!/bin/bash
file=/location/md5sum.txt
while IFS=, read -ra arr; do
while IFS= read -r -d '' file_name; do
md5=($(md5sum "$file_name"))
printf '%s\n' "$file_name $md5"
done < <(find . -name "${arr[0]}" -print0)
done<"$file"
这是当前的输出,如您所见,数据显示了文件的相对位置:
./level1/level2/day19-pgm-am_0946-23_p1_13.mov d41d8cd98f00b204e9800998ecf8427e
./level1/day19-pgm-am_0946-23_p1_13.mov d41d8cd98f00b204e9800998ecf8427e
./level1/level2/day19-pgm-am_0951-23_p1_14.mov d41d8cd98f00b204e9800998ecf8427e
./level1/day19-pgm-am_0951-23_p1_14.mov d41d8cd98f00b204e9800998ecf8427e
./level1/level2/day19-pgm-am_1016-23_p1_19.mov d41d8cd98f00b204e9800998ecf8427e
./level1/day19-pgm-am_1016-23_p1_19.mov d41d8cd98f00b204e9800998ecf8427e
./level1/level2/day19-pgm-am_1021-23_p1_20.mov d41d8cd98f00b204e9800998ecf8427e
./level1/day19-pgm-am_1021-23_p1_20.mov d41d8cd98f00b204e9800998ecf8427e
./level1/level2/day19-pgm-am_1111-23_p1_30.mov d41d8cd98f00b204e9800998ecf8427e
./level1/day19-pgm-am_1111-23_p1_30.mov d41d8cd98f00b204e9800998ecf8427e
最佳答案
$file_name
您从 find 获得的是 find 从提供给 find 的目录中找到的文件的相对路径。
你可以这样获取目录和文件名:
directory=`dirname $file_name`
just_filename=`basename $file_name`
并打印这些。
关于linux - while 循环读取命令正在打印位置而不仅仅是文件名 - 这是为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38614555/