2016-03-01 41 views
-1

目前,它打印出/dir1/dir2/dir3/filename需要命令打印出的文件而不是前述的目录路径

我只是希望它打印出来正好filename“不”的目录路径。

有什么建议吗?

+1

您应该告诉我们“它”是什么,写入哪种语言“it”,也可能是您运行“它”的操作系统。 – Rook

+0

对不起,bash在linux上 – Leo

+0

您应该通过编辑将这些信息添加到您的问题中。我为你添加了一个标签,这意味着人们可以真正找到它。 – Rook

回答

0

我真的不明白你正在尝试做的,但

ls /path/to/files > /path/to/output 

说你在目录中有3个个人的文本文件,上面会结合所有3个文件每个文件名在同一行,而不实际路径。

希望帮助

猛砸替代

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

的问题是非常模糊的,但假设你有一个像

echo "$path" 

bash命令,你可以只打印文件名与

echo "${path##*/}" 

echo可变字符串使用时,这样一个更好的选择是,像这样

printf '%s\n' "${path##*/}" 
+0

谢谢@pjh的帮助提示:) – Chris

0

使用basename可以做意想不到的事情:

shortpath=$(pwd) 
basename "$shortpath" 
+0

请注意,使用Bash,您可以避免使用'$ PWD'而不是'$(pwd)运行子进程的代价' 。 – pjh

0

我能做到这一点用awk

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

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

相关问题