1. ホーム
  2. bash

[解決済み] ディレクトリ内のファイルに対して、ファイル名のみ(パスなし)をエコーします。

2022-12-01 06:17:58

質問

forループでディレクトリを反復する場合、ファイル名だけをエコーの対象にするにはどうしたらよいでしょうか。

for filename in /home/user/*
do
  echo $filename
done;

は、ファイル名と一緒にフルパスを引きます。私はファイル名だけ欲しいのです。

どのように解決するのですか?

もしあなたが、ネイティブの bash ソリューション

for file in /home/user/*; do
  echo "${file##*/}"
done

上記では パラメータ展開 のような外部バイナリの呼び出しを必要としない、シェルにネイティブなものです。 basename

しかし、私は単に find

find /home/user -type f -printf "%f\n"