我有一个包含* .cpp.So类型文件的目录。我想复制目录中的每个文件,并使用
将其粘贴到同一目录中 cp -a *.cpp
可以选择在粘贴时删除.cpp。是否可以?
答案 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 切换(无操作)。
这不是复制,而是移动: - (