簡體   English   中英

Linux:復制多個文件並刪除它的擴展名

[英]Linux : Copy Multiple files and remove it's extension

我有一個包含* .cpp.So類型文件的目錄。我想復制目錄中的每個文件並使用它將其粘貼到同一目錄中

 cp -a *.cpp 

可以選擇在粘貼時刪除.cpp。這可能嗎?

這是一個簡單的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

您可以通過bash參數擴展來執行此操作,如bash手冊中所述:

$ {parameter %% word}刪除匹配的后綴模式。 這個詞被擴展為產生一個模式,就像路徑名擴展一樣。 如果模式匹配參數展開值的尾部,則擴展的結果是參數的擴展值,具有最短匹配模式(“%”'大小寫)或最長匹配模式(“%” %''案例)已刪除。
...

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

可以使用重命名 ,可選地使用-f強制重寫現有文件。

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

要預覽操作,但不要更改文件,請使用-n開關(無操作)。

這不是復制,但移動:-(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM