gpt4 book ai didi

linux - shell 脚本上的不明确重定向

转载 作者:太空宇宙 更新时间:2023-11-04 04:17:45 24 4
gpt4 key购买 nike

我试图创建一个小 shell 脚本,以便在将大文件从笔记本电脑的硬盘复制到外部驱动器时检查传输进度。从命令行来说,这是使用 pv 和简单重定向的简单功能,尽管该行相当长并且您必须知道文件大小(这就是我想要该脚本的原因):

控制台:du filename(获取确切的文件大小)

控制台:cat 文件名 | pv -s FILE_SIZE -e -r -p > 目标路径/文件名

在我的 shell 脚本中,我添加了 egrep "[0-9]{1,}"-o 来删除文件名并仅保留 du 返回值中的大小数字,其余部分应该很简单。

#!/bin/bash
du $1 | egrep "[0-9]{1,}" -o
sudo cat $1 | pv -s $? -e -r -p > $2/$1

问题是,当我尝试使用此方法复制 file12345.mp3 时,我收到一个不明确的重定向错误,因为 egrep 从文件名中获取 12345,但我只想要大小。这意味着第一行的返回值实际上是:

FILE_SIZE

12345

它有问题。我应该如何修改此脚本以仅解析第一个数字,直到第一个“”(空格)?

提前致谢。

最佳答案

如果我理解正确的话:

仅保留 du 命令输出中的文件大小:

du $1 | awk '{print $1}'

(假设第一个字段是文件的大小)

在重定向中添加双引号以避免错误:

sudo cat $1 | pv -s $? -e -r -p > "$2/$1"

此引用已完成,因为您的 $2 包含空格。

关于linux - shell 脚本上的不明确重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15425950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com