Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在tar归档中移动和重命名文件_Linux_Unix_Tar - Fatal编程技术网

Linux 在tar归档中移动和重命名文件

Linux 在tar归档中移动和重命名文件,linux,unix,tar,Linux,Unix,Tar,我有一个名为MyFiles.tar的tar存档,其中包含一个名为Directory的文件夹。在文件夹中,我有40个或更多文件,名为: MyFile_01.txt.gz MyFile_02.txt.gz MyFile_03.txt.gz MyFile_04.txt.gz MyFile_05.txt.gz... 例如: tar -tf MyFiles.tar tar -tf MyFiles.tar 收益率: Directory/MyFile_01.txt.gz Directory/My

我有一个名为MyFiles.tar的tar存档,其中包含一个名为Directory的文件夹。在文件夹中,我有40个或更多文件,名为:

MyFile_01.txt.gz 
MyFile_02.txt.gz 
MyFile_03.txt.gz 
MyFile_04.txt.gz 
MyFile_05.txt.gz...
例如:

tar -tf MyFiles.tar
tar -tf MyFiles.tar
收益率:

Directory/MyFile_01.txt.gz
Directory/MyFile_02.txt.gz
Directory/MyFile_03.txt.gz
Directory/MyFile_04.txt.gz
Directory/MyFile_05.txt.gz...
Sample_01.txt.gz
Sample_02.txt.gz
Sample_03.txt.gz
Sample_04.txt.gz
Sample_05.txt.gz...
我想删除目录文件夹并重命名文件,以便

收益率:

Directory/MyFile_01.txt.gz
Directory/MyFile_02.txt.gz
Directory/MyFile_03.txt.gz
Directory/MyFile_04.txt.gz
Directory/MyFile_05.txt.gz...
Sample_01.txt.gz
Sample_02.txt.gz
Sample_03.txt.gz
Sample_04.txt.gz
Sample_05.txt.gz...

正如建议的那样,一行:

tar xf MyFiles.tar; cd Directory; for n in MyFile_[0-9]*.txt.gz ;do [ -f "$n" ] && mv -f "$n" $(echo $n|sed -e s/MyFile/Sample/); done; tar cf ../Sample.tar Sample_[0-9]*.txt.gz; cd ..; rm -rf Directory

解压缩,将cd放入目录中,然后archive@user3791372有没有一种方法可以在一行中完成?