Bash 需要命令打印出文件名,但不打印前面的目录路径

Bash 需要命令打印出文件名,但不打印前面的目录路径,bash,directory,Bash,Directory,当前它打印出/dir1/dir2/dir3/filename 我只希望它只打印出文件名“而不打印”目录路径 有什么建议吗?我不太明白你想做什么,但是 ls /path/to/files > /path/to/output 假设目录中有3个单独的文本文件,上述文件将在一行中合并所有3个文件(每个文件名),而不包含实际路径 希望有帮助 Bash备选方案 for file in /path/to/files/*.txt; do echo ${file##*/} >> /path/

当前它打印出
/dir1/dir2/dir3/filename

我只希望它只打印出
文件名
“而不打印”目录路径


有什么建议吗?

我不太明白你想做什么,但是

ls /path/to/files > /path/to/output
假设目录中有3个单独的文本文件,上述文件将在一行中合并所有3个文件(每个文件名),而不包含实际路径

希望有帮助

Bash备选方案

for file in /path/to/files/*.txt; do
 echo ${file##*/} >> /path/to/output/filename.txt
done

这个问题非常模糊,但是假设您有一个Bash命令,比如

echo "$path"
您可以只打印文件名

echo "${path##*/}"
echo
与变量字符串一起使用时,可能会发生意外的事情,因此更好的选择是

printf '%s\n' "${path##*/}"
用于以下情况:

shortpath=$(pwd)
basename "$shortpath"

我能够用awk完成这项工作

|awk'{(n=split($18,a,“/”);print$6,$10,$8,a[n],“\n”}'>/sometextfile.txt


“\n”是因为我需要在结果之间留一个空行。

您应该告诉我们“it”是什么,“it”是用哪种语言编写的,可能还有您运行“it”的操作系统。对不起,bash on Linux您应该通过编辑将此信息添加到您的问题中。我为你添加了一个标签,这意味着人们可以找到它。你试过basename吗?e、 g.basename/dir1/dir2/dir3/filename感谢@pjh提供的有用提示:)注意,使用Bash,您可以通过使用
$PWD
而不是
$(PWD)
来避免运行子流程的成本。