【发布时间】:2021-09-08 09:26:11
【问题描述】:
我正在创建一个列出目录中所有文件名的变量,以供以后在 for 循环中使用。
OIFS="$IFS"
IFS=$'\n'
images=website/images
dirlist=`find $images -type f`
echo $dirlist
$dirlist 当前正确显示所有文件,可以在后续的for循环中使用,但还包含目录名称:
website/images/Todiste71.png website/images/Torsion.png website/images/GLP Bewegung Tag 0bis3.gif website/images/Todiste70.png website/images/StanislawSisk.jpg website/images/Hejného metoda graf.jpg website/images/Mathemagicslogo.png website/images/Odddecomp2d.jpg website/images/Fields of Mathematics Ukr.png website/images/Todiste99.png website/images/Todiste72.png website/images/与4链交替相关的细分规则link.png website/images/Todiste73.png website/images/Todiste98.png website/images/Todiste88.png website/images/Todiste77.png website/images/Todiste76.png website/images/Todiste89.png website/images/Illustration直线的斜率 y=-2x+13.png website/images/Portal Math Banner hy.png website/images/计算线性方程的斜率 y=-2x+13 (bold).png website/images /Vingenere 1.png website/images/Todiste74.png website/images/Vertical Horizontal.PNG website/images/Curve with tangent line.png website/images/Correlacion.png website/images/T odiste75.png website/images/GradientOfRegularPentagonExteriorAngle.gif website/images/PointToLineDistance v2.png website/images/Sistema anotación alge 005.jpg website/images/Todiste132.png website/images/Todiste126.png website/images/Tree-basis. jpg website/images/1-6 Rossler Skeleton.png website/images/LeibnizInfinitesimalTriangle.png website/images/计算线性方程的斜率y=-2x+13.png website/images/SilverRatioCirclesTangentLine 2.gif website/images/切线与割线.png website/images/Histogram sum of length 2 permutations of 1 2 3.svg website/images/Todiste127.png website/images/Todiste133.png website/images/Monodromy action.svg website/images/Todiste125 .png website/images/Todiste131.png website/images/Todiste119.png website/images/Mobius shadow.jpg website/images/Rossler Periodic Orbit w2.gif website/images/Todiste118.png website/images/Todiste130.png .. .
我需要编写代码以便 $dirlist 只显示图像/{filename},或者只显示不带目录名称的 {filename}。例如,以下是可接受的输出:
图像/Todiste71.png
Todiste71.png
提前感谢您的帮助!
【问题讨论】:
-
"...后续 for 循环..." -- 考虑使用
-exec progname {} +或-exec progname {} \;代替 for 循环,因为前者在“有趣”方面更稳定文件名。 -
因为我认为您需要目录名称的某些部分(基本文件夹中的子目录)用于后面的循环,您也可以在
find和cd - >/dev/null之前做一个简单的cd找到之后。也可以使用 sed 消除路径变量(图像)的内容:find $images -type f | sed -e "s#^$images/##" -
@GaryKong :使用数组不是更有意义吗?它比保存所有文件名的标量变量更容易处理,而且您不会遇到文件名中的空格问题。
-
@GaryKong:删除了 sh 标签,因为它与您的问题无关。
-
Remove path from find command output 回答你的问题了吗?