有人可以向我解释为什么当我在下面的脚本中打印$ 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
答案 0 :(得分:2)
$file_name
是从find提供的目录中找到的文件的相对路径。
您可以像这样获取目录和文件名:
directory=`dirname $file_name`
just_filename=`basename $file_name`
打印这些。
答案 1 :(得分:0)
试试这个;
#!/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' "$(basename $file_name) $md5"
done < <(find . -name "${arr[0]}" -print0)
done<"$file"
答案 2 :(得分:0)