0
我编写了下面这段代码来打印输出中目录的文件名。该目录是dir1
并且其文件名是L1, L2, L3, ..,L512
如何在shell中输出文件名?
#!/bin/bash
TOP=`pwd`
for file in "$TOP/dir1"/*; do
echo "$file"
done
exit
但是,而不是印刷只是文件名(L1,L2,..),它输出对应于每个文件的全路径。我怎么能改变它只接收输出的文件名?
'的文件 “$ PWD/DIR1 /” *'会比使用'TOP'更有效。一般来说,捕获'pwd'的输出比使用'$ PWD'更加昂贵; 'pwd'是内建的,就像'$ PWD'一样,但是执行命令替换需要'fork()'调用的开销。对于这个问题,'top = $ PWD'也可以提高效率。 (按照惯例,全部大写的名字保留用于环境变量和内置函数;在这种情况下,'TOP'既不是)。 – 2015-01-27 00:02:46
@CharlesDuffy:我想知道为什么用你的答案的文件名不排序输出? L1 L10 L100 L101 L102 L103 L104 L105 L106 L107 L108 L109 L11 L110 L111 等 – KianStar 2015-01-27 00:37:38
他们是* *排序:因为他们出现了。这是您的语言环境的排序顺序(如果您的语言环境设置为“C”,则为ASCII排序),而不是数字排序顺序。那里没有具体的答案。无论如何,您都会从globs获取语言环境排序顺序。 – 2015-01-27 01:21:39