如何从 du -h 输出末尾删除文件名
举个例子:
$ du -h file_size.txt
112K file_size.txt
我如何从 du -h 的输出中删除文件名
我尝试使用 sed 搜索字符串(文件名)并将其替换为任何内容,但它没有起作用(下面的命令)
du -h file_size.txt | sed 's/ 'file_size.txt'//'
有人可以指出吗为什么这行不通,或者也许有更好的方法?
问候
保罗
take the example:
$ du -h file_size.txt
112K file_size.txt
How would i remove the filename from the output of du -h
I have tried to use sed to search for a string (the filename) and replace it with nothing, but it hasnt worked (command below)
du -h file_size.txt | sed 's/ 'file_size.txt'//'
Could someone please point out why this wont work, or perhaps a better way to do it?
Regards
Paul
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
您在该命令行中有一些错误的引用。最简单的可能是:
修复你的命令行:
因为你的帖子有一个
awk
标签:You have some bad quoting in that command line. The simplest is probably:
To fix your command line:
Since your post has an
awk
tag:简单输出第一列。这是 awk 的解决方案
Simple output the first column. Here is the awk solution
为什么不只是
stat
呢?如果你坚持使用
du
方式,获取第一列比提到的更干净:或
wc
方式 - 使用<
重定向通过管道发送文件,因此您不需要修剪文件名 —- 不知何故 BSD-wc垫在额外的空间why not just
stat
it ?if u insist on the
du
way, getting first column is cleaner than mentioned :or the
wc
way - using<
redirection sends the file over the pipe, so u don't need to trim out the filename —- somehow BSD-wc pads in an extra space这有点冗长,但无论如何,这是达到您想要的效果的另一种方式:
This is a little more verbose, but in any case, this is another way to what you want:
@OP如果您的数据具有不同的字段,例如空格/制表符,那么使用 awk/cut 等工具通过分隔符在这些字段上分割它们会更容易。不需要使用正则表达式(例如 sed )。更好的是只使用 shell。
各种方式
@OP if your data has distinct fields, for example spaces/tabs, then its easier to use tools like awk/cut to split them on those fields by delimiters. Using regex (eg sed ) is not necessary. Even better is just using the shell.
various ways
除非您在 sed 正则表达式和 du 输出选项卡中包含空格,否则您的原始命令将有效。
Your original command would have worked except that you are including a space in the sed regexp, and du outputs tabs.
du -h
的输出以 [tab] 分隔。the output of
du -h
is [tab] delimited.要处理包含换行符的文件名:
有一个非常酷的
sed
解决方案,使用“打印并退出”技巧,来自 这里:这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的
./filename\nwith\nnewlines.txt' | cut -f1 4.0K with newlines.txt ./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }' 4.0Kset
答案):有一个非常酷的
sed
解决方案,使用“打印并退出”技巧,来自 这里:这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的
./filename\nwith\nnewlines.txt' | sed -E -n '/(.*)\t.*/{s//\1/p;q;}' 4.0Kset
答案):这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的
./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }' 4.0Kset
答案):有一个非常酷的
sed
解决方案,使用“打印并退出”技巧,来自 这里:这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的
set
答案):To deal with filenames containing newlines:
There's a really cool
sed
solution, using a "print and quit" trick, pulled from here:Most of the other answers on here can't deal with newlines (except for ghostdog's
./filename\nwith\nnewlines.txt' | cut -f1 4.0K with newlines.txt ./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }' 4.0Kset
answer):There's a really cool
sed
solution, using a "print and quit" trick, pulled from here:Most of the other answers on here can't deal with newlines (except for ghostdog's
./filename\nwith\nnewlines.txt' | sed -E -n '/(.*)\t.*/{s//\1/p;q;}' 4.0Kset
answer):Most of the other answers on here can't deal with newlines (except for ghostdog's
./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }' 4.0Kset
answer):There's a really cool
sed
solution, using a "print and quit" trick, pulled from here:Most of the other answers on here can't deal with newlines (except for ghostdog's
set
answer):