変数の一部を切り取ろうとすると構文エラーが発生しました。

変数の一部を切り取ろうとすると構文エラーが発生しました。

簡単なものを書くことはecho $i問題ありません。変数が表示されます。しかし、私がそれで何かをしようとすると

$($i|cut -d"." -f1-3)

その後、エラーメッセージが表示されます。

: -bash: /...file.backup: Permission denied (in root env)

誰でもトラブルシューティング方法を教えてもらえますか?

for i in $(find  /directory -type f -name '*.backup')
do 
  echo $i $($i|cut -d"." -f1-3)
done

答え1

$iの前のエコーを見逃したようです。

for i in $(find /directory -type f -name '*.backup')
do 
echo $i $(echo "$i"|cut -d"." -f1-3)
done`

答え2

basenameおそらくandまたは部分文字列を使用できますか?

参照man basenamehttp://tldp.org/LDP/abs/html/string-manipulation.html部分文字列の詳細。

デフォルト名を使用すると、ファイル名の最初の部分を取得できます。basename $i ".backup".backup はファイル名から削除されます。

${i::-7} は変数から最後の 7 文字を削除します。

答え3

2ターンで解決。最適ではないかもしれませんが、うまくいきます。他の解決策を知っている人がいれば教えてください。

for i in $(find  /directory -type f -name '*.backup')
do 
    for j in $(find  /directory -type f -name '*.backup'|cut -d"." -f1-3)
    do 
        echo $i $j 
    done 
done

関連情報