Linux 将多个具有唯一名称的文件移动到新文件夹并附加到文件名
我在一个文件夹里有大约2000个文件 所有文件的名称中都包含字符串Linux 将多个具有唯一名称的文件移动到新文件夹并附加到文件名,linux,batch-rename,mv,Linux,Batch Rename,Mv,我在一个文件夹里有大约2000个文件 所有文件的名称中都包含字符串test 我需要做的是将所有这些文件~1250移动到同一目录下名为垃圾桶的文件夹中,并将\u scrap附加到每个文件的末尾 mv *test* trash/ 我想要的是这样的东西: [root@server] ls test1.txt test2.txt test3.txt trash video1.txt video2.txt video3.txt [root@server] mv *test* trash/*_
test
我需要做的是将所有这些文件~1250移动到同一目录下名为垃圾桶
的文件夹中,并将\u scrap
附加到每个文件的末尾
mv *test* trash/
我想要的是这样的东西:
[root@server] ls
test1.txt test2.txt test3.txt trash video1.txt video2.txt video3.txt
[root@server] mv *test* trash/*_scrap
[root@server] ls
trash vidoe1.txt video2.txt video3.txt
[root@server] ls trash/
test1.txt_scrap test2.txt_scrap test3.txt_scrap
我可以移动所有文件,但是我不知道如何将\u片段
附加到末尾
由于我必须在许多机器上执行此操作,因此单行程序比小脚本更可取
$ touch test1.txt test2.txt test3.txt vidoe1.txt vidoe2.txt vidoe3.txt
$ mkdir trash
$ for file in *test*; do mv "$file" "trash/${file}_scrap"; done
$ ls
trash vidoe1.txt vidoe2.txt vidoe3.txt
$ ls trash
test1.txt_scrap test2.txt_scrap test3.txt_scrap
$
您也可以使用xargs
$ ls *test* | xargs -t -I{} mv {} trash/{}_scrap
mv test1.txt trash/test1.txt_scrap
mv test2.txt trash/test2.txt_scrap
mv test3.txt trash/test3.txt_scrap
$
您可以使用find
$ find . -name '*test*' -maxdepth 1 -exec mv {} trash/{}_scrap \;
您也可以使用xargs
$ ls *test* | xargs -t -I{} mv {} trash/{}_scrap
mv test1.txt trash/test1.txt_scrap
mv test2.txt trash/test2.txt_scrap
mv test3.txt trash/test3.txt_scrap
$
您可以使用find
$ find . -name '*test*' -maxdepth 1 -exec mv {} trash/{}_scrap \;
您可以使用
rename
来避免shell for循环。这是一个perl脚本,但它随许多常见发行版(包括Ubuntu 14)一起安装:
您可以使用
rename
来避免shell for循环。这是一个perl脚本,但它随许多常见发行版(包括Ubuntu 14)一起安装:
+1用于使用
find
使流程更干净。+1用于使用find
使流程更干净。技巧:mkdir z;mv*;mvz垃圾代码>将所有文件移动到目录中。请注意,如果某些文件以z
开头,则目录需要命名为zz
(或zzz
-目录需要是*
展开中的最后一项);mv*;mvz垃圾代码>将所有文件移动到目录中。请注意,如果某些文件以z
开头,则需要将目录命名为zz
(或zzz
-目录需要是*
扩展中的最后一项)。