技术解析

如何把输出结果(可以部分内容)作为重定向文件的文件名
0
2021-07-05 00:59:04
idczone

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

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

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

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


先把输出赋值给变量,然后在创建文件时使用变量呗

谢谢回答先. 好像可以,我去试试先

这样喵?
touch $(du -sh aaa | cut -d " " -f 2)-size-$(du -sh aaa | cut -d " " -f 1).txt

这个好,但是会生成三个文件 aaa.txt, 652K, aaa-size-652K 求完美

可能是跟 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 的输出

du -sh * | awk '{print $2"-size-"$1".txt"}' | xargs -i touch {}

好了,输出的内容中间是个 tab 不是空格, cut 后面改成 tab 就好了

好了,谢谢大家,结贴

其实更推荐 6 楼的方法,同样的
touch $(du -sh aaa | awk '{print $2"-size-"$1".txt"}')

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服