仅递归地重命名文件名中的特定字符串

时间:2017-03-27 19:32:22

标签: linux hdfs

我有一个包含90个文件的目录。文件名就像 /user/jk/2016d/IDPSRU20160219_2345.txt

我想将文件名更改为/user/jkris03/2016d/IDPSRU20160223_2345.txt

请注意,只有19被文件名中的23替换,后续_2345对于每个文件都会有所不同。

如果你能提供答案,我将非常感激。

请注意,direcory /文件位于hdfs。

谢谢,

2 个答案:

答案 0 :(得分:2)

如果您只想将19_替换为23_,可以执行以下操作:

hdfs dfs -ls -C /user/jk/2016d/ | awk '{OLD=$0; sub("19_", "23_", $0); system("hdfs dfs -mv "OLD" "$0);}'

其中,

hdfs dfs -ls -C /user/jk/2016d/:用于列出HDFS文件

OLD=$0:用于存储旧文件名

sub("19_", "23_", $0):用于创建新文件名

system("hdfs dfs -mv "OLD" "$0):用于重命名文件

希望它有所帮助!

答案 1 :(得分:0)

您可以查看rename命令。它允许您通过正则表达式重命名。我认为它在不同的发行版之间有所不同,因此请使用man rename查看它是如何为您工作的。

相关问题