我有数百个文件夹要根据文件夹的名称进行整理,让我们说我有几个文件夹名称BBC和peppapig作为名称的一部分
e.g。 (文件夹)
doc_BBC_life
BBC.nature
peppapigepisode1
kidspeppapigseries
animalsBBC-docment
newfolder1
newfolder2
现在我想移动文件夹(有四个),其名称为" BBC"进入名为newfolder1的子文件夹,同样适用于名称为" peppapig"的文件夹。进入newfolder2文件夹
注意:每个文件夹都有几个文件,其名称也是" BBC"或者" peppapig",我想保持内容而不会乱窜。
我想做这样的事情" mv BBC BBC /
使用mv的任何建议?感谢
答案 0 :(得分:5)
您可以直接使用mv
命令移动,如下所示
mv *BBC* newfolder1
并且
mv *peppapig* newfolder2
您也可以使用find
find . -type d -name '*BBC*' -exec mv "{}" newfolder1 \;
和
find . -type d -name '*peppapig*' -exec mv "{}" newfolder2 \;
答案 1 :(得分:2)
无法写评论,所以我必须添加一个答案:
我尝试了arkascha给出的解决方案,因为它产生了错误的结果:
drwxrwxr-x 2 myuser myuser 4096 Apr 19 21:31 bbc
drwxrwxr-x 2 myuser myuser 4096 Apr 19 21:31 bbc1
drwxrwxr-x 2 myuser myuser 4096 Apr 19 21:31 bbc2
drwxrwxr-x 2 myuser myuser 4096 Apr 19 21:31 dir_to_mv
myuser@workstation:~/he$ find . -iname "*bbc*" -type d | xargs mv ./dir_to_mv/
myuser@workstation:~/he$ ls -l
total 4
drwxrwxr-x 5 myuser myuser 4096 Apr 19 21:31 bbc1
myuser@workstation:~/he$ cd bbc1/
myuser@workstation:~/he/bbc1$ ls -l
total 12
drwxrwxr-x 2 myuser myuser 4096 Apr 19 21:31 bbc
drwxrwxr-x 2 myuser myuser 4096 Apr 19 21:31 bbc2
drwxrwxr-x 2 myuser myuser 4096 Apr 19 21:31 dir_to_mv
你可以看到它没有按照假设将bbc目录移动到dir_to_mv。 以下工作:
find . -iname "*bbc*" -type d -exec mv '{}' ../dir_to_mv/ \;
请注意,您需要在其他路径中使用目录dir_to_mv,而不是在您正在处理的目录中。否则find会产生奇怪的递归结果。
人们总是必须通过find来处理这个问题。
答案 2 :(得分:0)
您可以使用find
实用程序创建非常灵活的搜索,并使用args`实用程序将其与mv
命令结合使用:
find . -iname "*bbc*" -type d | xargs mv ./BBC/
这会将当前文件夹中名称(案例不敏感)中包含“bbc”的所有目录移动到文件夹BBC
中。移动目录根本不会改变或“扰乱”其内容。