solution.txt
拡張子(例:->)を含むファイル名の一部を抽出する必要がありますsol.txt
。
答え1
パラメータ拡張の使用:
$ file="solution.txt"
$ echo "${file:0:3}.${file##*.}"
sol.txt
答え2
sedとPythonを使用して完了
echo "solution.txt" |sed "s/\(...\)\([a-z]\{5\}\)\(....\)/\1\3/g"
出力
sol.txt
Pythonの使用
a="solution.txt"
print a[0:3] + a[-4:]
出力
sol.txt
答え3
別のアプローチは、ファイル名を対応するコンポーネントに分割し、所望の形式に再構成することである。
#!/bin/sh
origname="$1"
# directory = everything from "origname" except the part after the last /
directory="${origname%/*}"
if [ "$origname" = "$directory" ]; then
# there was no directories in the original name at all
directory="."
fi
# to get the filename, remove everything up to the last /
filename="${origname##*/}"
# to get the extension, remove everything up to the last .
extension="${origname##*.}"
# take first 3 characters of original filename as a new name
newname="$(echo "$filename" | cut -c 1-3)"
# output the result
echo "${directory}/${newname}.${extension}"
これは長いですが、ユースケースに合わせて理解して修正する方が簡単です。