簡単なものを書くことは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 basename
とhttp://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