繁体   English   中英

在一个命令行中重命名多个文件夹中的相同文件

[英]renaming in one command line, same file which is in multiple folders

我需要在一个命令行(bash)中重命名4个不同目录中的同一文件...我不能使用“;” 或bash脚本。谢谢。...我正在尝试类似的方法:

mv folder/{folder1,folder2,...}/file folder/{folder1,folder2,...}/new_name_file 

但这不起作用。

这是一种方法:

$ mkdir foo bar baz
$ touch {foo,bar,baz}/quux
$ find foo bar baz -type f -name quux | while read file; do mv "$file" $(dirname "$file")/xyxxy; done
$ find foo bar baz -type f -name xyxxy
foo/xyxxy
bar/xyxxy
baz/xyxxy

您可以在末尾定义更多行:

#!/bin/bash                                                                                                                                           

while read dir diir; do
    mv $dir $diir
done <<___HERE                                                                                                                                        
/path/to/dir1   /path/to/diir1                                                                                                                        
/path/to/dir2   /path/to/diir2                                                                                                                        
___HERE

您可以在一行中运行它:

$./script.sh | (Do what you want here)

单线:

find folder/folder{1,2,3} -type f -name 'file' -exec bash -c 'mv -v {} $(dirname {})/new_name_file' \;

对于这种特定情况,您可以使用:

echo folder/{folder1,folder2,...} | xargs -n1 echo |xargs -I% mv %/oldfile %/newfile

但是更可移植的重命名子目录中的所有文件将是

rename(){ #usage rename from_name to_name
    find . -name $1 |xargs -l dirname |xargs -I% mv %/$1 %/$2
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM