kshを使用してファイル内の複数の文字列を置き換える

kshを使用してファイル内の複数の文字列を置き換える

すべてのファイルが.で始まるディレクトリがあります。ファイル名だけを.ear削除して保持したいです。.earできますか?

私が試したとき

cd /path/
ls >> file

その後、出力ファイルにfile保存されているディレクトリ名には、末尾のファイルを含む.earすべてのファイルが含まれます。.earファイル名だけを削除して保持したいです。

ベストアンサー1

/path.earサフィックスを削除しながらディレクトリで終わるファイル名のリストを生成するには、次の手順を実行します。

for name in /path/*.ear; do
    basename "$name" .ear
done >list

このbasenameユーティリティはパス名のファイル名部分を返し、2番目の引数が指定された場合、この引数は各名前の末尾から削除する必要がある文字列として扱われます。

上記のループでは、パターンに一致するファイルのみを繰り返し、サフィックスなしでファイル名を抽出し、リストを名前付き/path/*.earファイル.earに書き込みますlist

これは改行文字を含むファイル名も正しく処理します。

$'my.left.ear\ncollection 1.ear'

おすすめ記事