Linux:复制多个文件并删除它的扩展名

时间:2015-01-30 15:10:52

标签: linux file ubuntu copy copy-paste

我有一个包含* .cpp.So类型文件的目录。我想复制目录中的每个文件,并使用

将其粘贴到同一目录中
 cp -a *.cpp 

可以选择在粘贴时删除.cpp。是否可以?

3 个答案:

答案 0 :(得分:5)

这是一个简单的bash脚本。此脚本假定文件名仅包含一个“。”基于此的角色和分裂。

#!/bin/sh

for f in *.cpp; do

#This line splits the file name on the delimiter "."
baseName=`echo $f | cut -d "." -f 1`
newExtension=".new"

cp $f $baseName$newExtension

done

答案 1 :(得分:4)

您可以通过bash参数扩展来执行此操作,如bash手册中所述:

  

$ {参数%%字}                 删除匹配的后缀模式。这个词被扩展为产生                 与路径名扩展一样的模式。如果模式匹配                 参数的扩展值的尾部,然后是                 扩展的结果是参数的扩展值                 最短的匹配模式(“%'' case”)或最长的匹配模式                 匹配模式(``%%'' case)已删除   ...

for i in *.cpp
do
     cp -a $i ${i%%.cpp}
done

答案 2 :(得分:1)

可以使用重命名,也可以使用 -f 强制重写现有文件。

rename -f 's/\.ext$//' *.ext

要预览操作,但不要更改文件,请使用 -n 切换(无操作)。

这不是复制,而是移动: - (