私のローカルサーバーは、作成されたバックアップファイルのサイズを確認したいリモートサーバーのstfpにのみアクセスできます。だからログインして "ls -l"コマンドを実行するためにbashを書くことができました。
file_listing=$(sftp connection_string:Path/to <<<$'ls -l file.sql.gz')
...生産する:
$ echo $file_listing
Changing to: /Path/to sftp> ls -l file.sql.gz -rw------- ? 19009 19009 7834147822 Oct 19 23:02 file.sql.gz
bash 基本的な文字列操作や grep などのツールを使用して、この文字列のファイルサイズ部分を抽出できるようにしたいです。この場合7834147822
私はgreppingを試み、パターンを得るためにgreppingを試しました。
size_pattern='([0-9]{1} {1}[0-9]+ {1}[A-Z]{1})'
または...
echo $file_listing | egrep -o '[[:digit:]]\{1\}[[:blank:]][[:digit:]]\+[[:blank:]][A-Z]\{1\}'
...または他のもの。9 7834147822 O
うまくいけば、"
馬になる?誰にもアイデアはありますか?
最高の願い、スポーツウェア
ベストアンサー1
参照変数を使用しないと、echo
すべての内容が1行に印刷されます。引用符を追加すると、操作が簡単になりますgrep
。
しかし、私はまだ以下を好みますawk
。
echo "$file_listing" | awk 'NR==3{print $5}'
もう一つの興味深いアプローチは次のとおりですset
。
set -- $(tail -n1 <<< "$file_listing")
echo $5
次からアクセスできる場合は、次のものを解析するls -l
よりも使用する方がよいでしょう。stat
ssh
sftp
ssh user@server 'stat --format %s /path/to/file'