我用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
% 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] 举报,一经查实,本站将立刻删除。