如何把输出结果(可以部分内容)作为重定向文件的文件名

2016-03-16 17:02:31 +08:00
 Alife

最近在用 winscp ,想使用 自定义命令 来查看选中的目录大小(包含子目录)
主要是 winscp 自带的计算速度太慢

假如有目录 aaa,执行 du -sh aaa 输出 652K aaa
我添加了一个自定义命令 du -sh "!" > "!"-size.txt
执行后,当前目录下生成 aaa-size.txt 内容为 652K aaa

有没有什么方法可以把输出结果作为重定向文件的文件名
如上述命名生成的文件名直接为 aaa-size-652K.txt

google 搜索了半天,没搜出来,可能关键字不对.

3397 次点击
所在节点    Linux
9 条回复
Strikeactor
2016-03-16 17:10:36 +08:00
先把输出赋值给变量,然后在创建文件时使用变量呗
Alife
2016-03-16 17:17:03 +08:00
@Strikeactor 谢谢回答先. 好像可以,我去试试先
Counter
2016-03-16 17:24:13 +08:00
这样喵?
touch $(du -sh aaa | cut -d " " -f 2)-size-$(du -sh aaa | cut -d " " -f 1).txt
Alife
2016-03-16 17:33:52 +08:00
@Counter 这个好,但是会生成三个文件 aaa.txt, 652K, aaa-size-652K 求完美
Counter
2016-03-16 17:42:19 +08:00
@Alife 可能是跟 du -sh aaa 的输出有关,假设输出是 652K aaa ,作为测试
命令 touch $(du -sh aaa | cut -d " " -f 2)-size-$(du -sh aaa | cut -d " " -f 1).txt
等同于 touch $(echo 652K aaa | cut -d " " -f 2)-size-$(echo 652K aaa | cut -d " " -f 1).txt
建议研究下 du -sh aaa 的输出
xujif
2016-03-16 17:50:51 +08:00
du -sh * | awk '{print $2"-size-"$1".txt"}' | xargs -i touch {}
Alife
2016-03-16 18:21:21 +08:00
@Counter 好了,输出的内容中间是个 tab 不是空格, cut 后面改成 tab 就好了
Alife
2016-03-16 18:22:18 +08:00
好了,谢谢大家,结贴
Counter
2016-03-16 19:05:41 +08:00
@Alife 其实更推荐 6 楼的方法,同样的
touch $(du -sh aaa | awk '{print $2"-size-"$1".txt"}')

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/263974

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX