別のディレクトリのファイル名から番号だけを取得する方法は?sed
awk
またはbash
?のみ使用してください。長さに制限はありませんが、フォーマットは常にABC1234であるとします。
私が試したファイル名がある場合ABC1311.crs
にのみ必要です1311
。
number=`awk -F '[]' '{print $2}' $data/ABC123.crs
答え1
これは奇妙な要件のように見えますが、任意のファイル名から数字を抽出するには、パラメータ拡張を使用してファイル名から数字以外のものをすべて削除できます。
for f in *
do
printf '%s\n' "${f//[![:digit:]]/}"
done
答え2
私は以下を使用しますgrep
:
grep -Eo '[0-9]+' file.txt
答え3
以下を使用して数値を取得できます。
echo * | grep -o '[[:digit:]]*'
必要echo *
に応じて に置き換えることができます。ls
ただ使用したい場合は、awk
次のことができます。
\ls | awk 'match($0, /[[:digit:]]+/) {print substr($0, RSTART, RLENGTH)}'
\ls
ディレクトリ内のすべてのファイルが一覧表示されますが、awk
最初の数値セットのみが印刷されます。これは、ファイルに複数の数値文字列が含まれている場合にのみ出力されます(例2043x924_fjnndkk.jpg
:)2043
。
\ls
あなたのls
エイリアスが何かについてのものであれば、それを使用してください。それ以外の場合は、通常のエイリアスでls
十分です。私の場合、エイリアスls
(ls -s
およびその他のオプション)を使用してこのコマンドを妨げる寸法は常に印刷されます。