微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux如何在将文件传输到tar之前,在文件周围放置双引号?

我用ls来获得我的文件名,它有空白,所以它看起来像这样:

my file with whitespace.tar.bz2

我想pipe这个tar类似于:

ls | grep mysearchstring | tar xvjf

如何在inputtar之前插入双引号?

select一个文件的一部分,并将其复制到Linux中的新文件

使用Linux和.NET

通过Web浏览器重新启动Linux服务器(PHP

克隆()/ fork()/进程创build在一些机器上是慢的

JMeter命令行:我可以输出运行日志到STDOUT吗?

如何在远程机器上执行Perl程序?

如何比较Linux中的两个大文件

在Linux中从USB设备捕获input

我如何获得关于Linux的信息,我的程序是否交换?

不能理解linux内核中max函数的实现

一个好的工具是find和xargs。 例如,您可以使用:

find . -name '*.tar.bz2' -print0 | xargs -0 -n1 tar xjf

像pixelbeat建议你也可以这样使用shell:

for archive in *.tar.bz2; do tar xvjf "$archive"; done

shell通配符扩展有什么问题? (假设只有一个文件名)

% tar -cvf *mysearchstring* % tar -xvf *mysearchstring*

当然,匹配* mysearchstring *的文件名将会有空格。 但是shell [tcsh,bash]会把这个文件名( 包括它的空格)分配给一个tar参数。

您可以使用简单的C或C ++程序进行验证。 例如:

#include <iostream> using namespace std; int main( int argc,char **argv ) { cout << "argc = " << argc << endl; for ( int i = 0; i < argc; i ++ ) cout << "argv[" << i << "] = "" << argv[i] << """ << endl; return 0; }

试试看: ./a.out * foo *

这就是为什么CSH有:q [引用的单词列表]选项…

例如[tcsh]

foreach FILE ( *mysearchstring* ) tar -xvf $FILE:q end

或tar -xvf“$ FILE”而不是tar -xvf $ FILE:q ,如果你愿意的话。

如果你真的要用ls …

使用ls通过任何东西将输出每行一个文件名。 使用tr我们可以将换行符翻译为任何其他字符,例如null。 xargs可以接收以null结尾的字符串。 这规避了空间问题。 使用-n1将克服多个文件的问题。

例如: ls | grep mysearchstring | tr' 012'' 0'| xargs –null -n1 tar -xvf

但我不相信焦油容纳多个tarfiles从标准偏差像OP有它…

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐