如何从 du -h 输出末尾删除文件名

发布于 2024-08-21 09:11:59 字数 294 浏览 7 评论 0原文

举个例子:

$ 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

刘备忘录 2024-08-28 09:11:59

您在该命令行中有一些错误的引用。最简单的可能是:

du -h file_size.txt | cut -f -1

修复你的命令行:

du -h file_size.txt | sed 's/file_size.txt//'

因为你的帖子有一个 awk 标签:

du -h file_size.txt | awk '{ print $1 }'

You have some bad quoting in that command line. The simplest is probably:

du -h file_size.txt | cut -f -1

To fix your command line:

du -h file_size.txt | sed 's/file_size.txt//'

Since your post has an awk tag:

du -h file_size.txt | awk '{ print $1 }'
如若梦似彩虹 2024-08-28 09:11:59
du -h file_size.txt | cut -f1
du -h file_size.txt | cut -f1
仙女山的月亮 2024-08-28 09:11:59

简单输出第一列。这是 awk 的解决方案

du -h test.txt  | awk '{ print $1 }'

Simple output the first column. Here is the awk solution

du -h test.txt  | awk '{ print $1 }'
还不是爱你 2024-08-28 09:11:59

为什么不只是 stat 呢?

 stat -f '%z' vg1.mp4 # BSD-stat
821258414
gstat -c '%s' vg1.mp4 # GNU-stat
821258414

如果你坚持使用 du 方式,获取第一列比提到的更干净:

<前><代码>du -smh vg1.mp4 | awk NF=1

783M

wc 方式 - 使用 < 重定向通过管道发送文件,因此您不需要修剪文件名 —- 不知何故 BSD-wc垫在额外的空间

gwc -c <; vg1.mp4 # GNU-wc      
821258414

<前><代码> wc -c < vg1.mp4 # BSD-wc

 821258414

why not just stat it ?

 stat -f '%z' vg1.mp4   # BSD-stat
821258414
gstat -c '%s' vg1.mp4   # GNU-stat
821258414

if u insist on the du way, getting first column is cleaner than mentioned :

du -smh vg1.mp4 | awk NF=1 
783M

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

gwc -c < vg1.mp4    # GNU-wc      
821258414
 wc -c < vg1.mp4    # BSD-wc
 821258414
_失温 2024-08-28 09:11:59

这有点冗长,但无论如何,这是达到您想要的效果的另一种方式:

du -h file_size.txt |while read x junk; do echo $x; done

This is a little more verbose, but in any case, this is another way to what you want:

du -h file_size.txt |while read x junk; do echo $x; done
夏至、离别 2024-08-28 09:11:59

@OP如果您的数据具有不同的字段,例如空格/制表符,那么使用 awk/cut 等工具通过分隔符在这些字段上分割它们会更容易。不需要使用正则表达式(例如 sed )。更好的是只使用 shell。

各种方式

$ du -h file | awk '{print $1}'
4.0K

$ du -h file | cut -f1
4.0K

$ set -- $(du -h file) #using shell only
$ echo $1
4.0K

@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

$ du -h file | awk '{print $1}'
4.0K

$ du -h file | cut -f1
4.0K

$ set -- $(du -h file) #using shell only
$ echo $1
4.0K
机场等船 2024-08-28 09:11:59

除非您在 sed 正则表达式和 du 输出选项卡中包含空格,否则您的原始命令将有效。

Your original command would have worked except that you are including a space in the sed regexp, and du outputs tabs.

汐鸠 2024-08-28 09:11:59

du -h 的输出以 [tab] 分隔。

du -h file_size.txt |sed 's/[\t].*//g'

the output of du -h is [tab] delimited.

du -h file_size.txt |sed 's/[\t].*//g'
轻拂→两袖风尘 2024-08-28 09:11:59

要处理包含换行符的文件名:

$ du -h 

有一个非常酷的 sed 解决方案,使用“打印并退出”技巧,来自 这里

$ du -h 

这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的 set 答案):

$ du -h 
./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }'
4.0K

有一个非常酷的 sed 解决方案,使用“打印并退出”技巧,来自 这里


这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的 set 答案):


./filename\nwith\nnewlines.txt' | sed -E -n '/(.*)\t.*/{s//\1/p;q;}'
4.0K

这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的 set 答案):


./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }'
4.0K

有一个非常酷的 sed 解决方案,使用“打印并退出”技巧,来自 这里

这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的 set 答案):

./filename\nwith\nnewlines.txt' | cut -f1 4.0K with newlines.txt ./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }' 4.0K

有一个非常酷的 sed 解决方案,使用“打印并退出”技巧,来自 这里

这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的 set 答案):

./filename\nwith\nnewlines.txt' | sed -E -n '/(.*)\t.*/{s//\1/p;q;}' 4.0K

这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的 set 答案):

./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }' 4.0K

有一个非常酷的 sed 解决方案,使用“打印并退出”技巧,来自 这里

这里的大多数其他答案都不能处理换行符(除了 Ghostdog 的 set 答案):

To deal with filenames containing newlines:

$ du -h 

There's a really cool sed solution, using a "print and quit" trick, pulled from here:

$ du -h 

Most of the other answers on here can't deal with newlines (except for ghostdog's set answer):

$ du -h 
./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }'
4.0K

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):


./filename\nwith\nnewlines.txt' | sed -E -n '/(.*)\t.*/{s//\1/p;q;}'
4.0K

Most of the other answers on here can't deal with newlines (except for ghostdog's set answer):


./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }'
4.0K

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):

./filename\nwith\nnewlines.txt' | cut -f1 4.0K with newlines.txt ./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }' 4.0K

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):

./filename\nwith\nnewlines.txt' | sed -E -n '/(.*)\t.*/{s//\1/p;q;}' 4.0K

Most of the other answers on here can't deal with newlines (except for ghostdog's set answer):

./filename\nwith\nnewlines.txt' | awk 'NR==1 { print $1 }' 4.0K

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):

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文