我有几个子目录,在我的主目录中没有一致的命名模式(例如 ~/123
, ~/456
, ~/789
) .
在每个子目录中,我有两个名为 alignment1
和 alignment2
的文件夹 . 在文件夹 alignment1
和 alignment2
中有几个文件 .
我感兴趣的文件在 alignment1
文件夹中名为 alignment1
(无扩展名),在 alignment2
文件夹中名为 alignment2
(无扩展名) .
请记住,在文件夹 alignment1
和 alignment2
中还有其他名为 alignment
的文件,但它们有扩展名(例如, alignment1.backbone
, alignment1.bbcol
和 alignment2.backbone
, alignment2.bbcol
分别位于 alignment1
和 alignment2
文件夹中),但我对这些文件不感兴趣 .
~/123/alignment1/alignment1
~/123/alignment2/alignment2
~/456/alignment1/alignment1
~/456/alignment2/alignment2
etc...
Question:
-
我的目标是将文件夹
alignment1
和alignment2
重命名为subdirectory_alignment1
和subdirectory_alignment2
(例如,123_alignment1
和123_alignment2
) . -
然后,在文件夹
alignment1
和alignment2
中,分别名为alignment1
和alignment2
的对齐文件需要重命名为subdirectory_1.aln
和subdirectory_2.aln
. -
将
subdirectory_1.aln
和subdirectory_2.aln
移动到主目录 .
1 回答
试图将问题分解成小部分 . 这段代码应该找到所有出现的 . 也许你应该在正则表达式中改变一些东西 .
\1
将匹配\(
和\)
内已匹配的内容 .mindepth
应该找到*/*/*
及以下 .*
在这里很重要,因为你将在结果上拥有/
的数量 .现在,您正在迭代您感兴趣的所有文件 . 在向前移动之前,循环内部的一个好主意是
echo "$f"
.如果过滤器正在工作,下面是将文件名分成小部分的一些想法:
现在只是一些简单的
mv "$from" "$to"
在这里和那里 .