我的代碼有效,但不是我想要的。基本上,我的代碼所做的是通過當前目錄查找,搜索文件夾,並在這些文件夾中查看這些文件。如果其中一個文件擴展名是$ Example變量的值,那麼它應該刪除具有相同起始文件名的所有其他文件,而不考慮擴展名,並將帶有$ Example擴展名的擴展名重命名爲相同名稱,而不使用$示例擴展。下面是代碼:保持* nix格式
#!/bin/sh
set -o errexit
Example=dummy
for d in *; do
if test "$(ls -A "$d" 2>/dev/null)"; then
if [ $(ls -1 ${d}/*.$Example 2>/dev/null | wc -l) -ge 1 ]; then
cd $(pwd)/$d;
for f in *.$Example; do
fileName="${f%.$Example}";
mv "$f" "${f%.$Example}";
#tr "\r" "\n" < "${f%.$Example}" > "${f%.$Example}"
listToDelete=$(find -name "$fileName.*");
for g in $listToDelete; do
rm $g;
done;
done;
cd ..;
fi;
fi;
done
使用VIM中已創建的文件,所以應該有Linux的格式,而不要使用Windows的格式化。由於某些原因,一旦擴展名已被刪除,使用此代碼,它將被格式化爲\r
,並且文件無法運行。我在臨時解決方案所在的位置添加了註釋,但我想知道是否有某種方法可以改變保留Linux格式的功能,或者可能有另一種方法來實現我想要的功能。由於
'mv'不應該改變文件內容,不管你怎麼稱呼它。 –
你如何檢查該文件是否有'\ r'而不是'\ n'? –
我無法在我的系統上重現此問題,我相信您的問題存在於別處。 –