linux - 移动一堆文件时更改所有文件

标签 linux bash unix

请问我应该如何处理这个问题有什么建议吗? 我需要移动目录中的所有文件并更改它们的名称,删除前面的所有内容并包括第一个“_”,例如:

之前的示例:

data directory
DT21_Filename1
D22_Filename2
D33_Filename3

导出数据目录 之后的示例:

Filename1
Filename2
Filename3

最佳答案

首先将所有文件重命名为:

rename 's/([^_]*_)//' *

然后将它们移动到目录中:

mv * PATH_TO_NEW_DIRECTORY

您还可以为上述内容编写脚本。

脚本:

curr_dir=$PWD
cd $1
for i in *; do
    rename 's/([^_]*_)//' $i
done;
mv * "$curr_dir/$2"

用法:

bash filename.sh path_to_old_directory relative_path_to_new_directory_from current

这将重命名文件并将其从 old_directory 移动到 new_directory。

如果您为新目录提供绝对路径:

cd $1
for i in *; do
    rename 's/([^_]*_)//' $i
done;
mv * $2

关于linux - 移动一堆文件时更改所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30869846/

相关文章:

c - 获取特定 PID 的状态

c++ - 使用 iptables 共享来自两个不同连接的 Internet 连接

bash - 如何在 bash shell 脚本中容纳变量中的空格?

Linux GNU getopt : ignore unknown optional arguments?

perl - 为什么文件测试运算符不起作用(Perl)?

linux - 在unix中查找目录的大小

unix - 抑制 find & grep "cannot open"输出

java - 关于java/maven/testng的一个基本问题

linux - curl 后“被杀”|球座

linux - bash setsid nohup ./prog & -- $!不指向子进程