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)
来避免运行子流程的成本。