如何从目录中的多个文件中删除前缀

如何从目录中的多个文件中删除前缀

我有大约 250 个文件,其名称为:

no_responseEvent_2002.02.07.03.15.56.970/       
no_responseEvent_2002.02.10.01.47.07.450/       
no_responseEvent_2002.02.13.14.18.46.00/

我想从每个文件名中删除“no_response”。
我怎么做?
我知道 for 循环可以工作,但我对如何实现它感到困惑。

答案1

我假设所有 250 个文件都位于同一目录中并遵循相同的命名模式。如果是这样的话,你可以这样做,

for i in  "$remove"*;do mv "$i" "${i#"$remove"}";done

测试

ls
no_responseEvent_2002.02.07.03.15.56.970   
no_responseEvent_2002.02.07.03.15.56.972
no_responseEvent_2002.02.07.03.15.56.971  
no_responseEvent_2002.02.07.03.15.56.973

现在,运行for循环后,我得到的输出为:

remove=no_response
for i in  "$remove"*;do mv "$i" "${i#"$remove"}";done
ls
Event_2002.02.07.03.15.56.970  
Event_2002.02.07.03.15.56.971  
Event_2002.02.07.03.15.56.972  
Event_2002.02.07.03.15.56.973

参考

http://www.commandlinefu.com/commands/view/2519/uniformly- Correct-filenames-in-a-directory

相关内容