basename多个文件

时间:2013-01-31 20:12:46

标签: linux bash file-rename

在一个目录中(我在Linux中工作)我有100个名为like name_02randomnumber

的子目录

e.g:

John_023338898963
MARK_022672389892
Petra_02326288918

在每个子目录中都有一个子目录,其名称类似于randomnumber_analyse,在该子目录中是一个名为first的文件。在最后一个子目录中,first是一个名为first_TR_first的文件。

所以我有100个first_TR_first个文件。我想获取所有这些文件,重命名并将它们复制到一个文件夹中。

我要复制到的文件夹是包含100个子目录的目录中名为allfiles的文件夹(因此该文件夹是第101个子目录)。

重命名很困难。需要将first_TR_first个文件重命名为AAAnumber

e.g。

AAA1
AAA2
...
AAA56

其他44个文件需要重命名为BBBnumber

e.g。

BBB1
BBB2
...
BBB44

我有2个.text文件,其中包含101个子目录的目录中的列表。一个包含name_02randomnumber子目录的56个名称,另一个包含其他44个名称。

我已经阅读了很多并尝试了很多,但我无法让它工作。有没有人知道或者我是否需要提供更多信息?

2 个答案:

答案 0 :(得分:1)

首先,您可以使用find查找文件:

find . -name "first_TR_first" -type f

这将列出它们所在的所有文件(和目录)。

你的其他描述都让我失望了。我想你可以保留两个计数器,一个用于AAA个文件,一个用于BBB个文件,但你怎么知道哪个是哪个?

在关闭之前澄清您的问题。给我们一个确切如何安排的例子。然后解释你想要什么以及它应该是什么样子。还要解释你所做的以及你尝试过的任何shell脚本或命令。

这里的人们喜欢帮助,但我们也希望看到别人做了一些工作。

当你在这里时,请注册StackOverflow并阅读一下这个网站是如何运作的。

答案 1 :(得分:0)

c=0; for i in `find . -name 'first_TR_first' -print |head -56`; do let c=c+1; cp $i allfiles/AAA$c;done

c=0; for i in `find . -name 'first_TR_first' -print |tail -44`; do let c=c+1; cp $i allfiles/BBB$c;done

这两个命令都是单行。您可能需要调整-44和-56以及c =数字以使其恰到好处。

相关问题