別のフォルダ内のフォルダの名前を取得しようとしています。以下のコードを使用しようとしましたが、問題はフォルダ名だけでなくフォルダの完全なアドレスを返すことです。
for folder in /[my folder]/*; do cat $folder; done
これで私は/[my folder]/subfolder1
私が期待したものが正確に何であるかを理解しますsubfolder1
。
ありがとう
答え1
cat
単に入力ストリームまたはファイルを取り込み、標準出力として印刷するプログラムです。ディレクトリは使用できませんcat
。これは意味がありません。特定のディレクトリのすべての最初のレベルのサブディレクトリ名を表示したい場合は、echo
それを使用して提供された内容を簡単に印刷できます。
$ for dir in foo/*/; do echo "$dir"; done
foo/dir1/
foo/dir2/
foo/dir3/
foo/dir4/
ループも必要ありません。
$ echo foo/*/
foo/dir1/ foo/dir2/ foo/dir3/ foo/dir4
パスなしでディレクトリ名のみを取得します。
$ for dir in foo/*/; do basename "$dir"; done
dir1
dir2
dir3
dir4
または、cd
次のパスにアクセスできます。
$ cd foo
$ echo */
dir1/ dir2/ dir3/ dir4/
または、cd
サブシェルでコマンドが完了したときにあった場所を保持します。
$ ( cd foo && echo */ )
dir1/ dir2/ dir3/ dir4/
または、別の行に入力して、奇妙なディレクトリ名(改行文字を含む名前など)でも機能していることを確認してください。
$ ( cd foo && printf -- '%s\n' */ )
dir1/
dir2/
dir3/
dir4/
最後に、ディレクトリ名に改行文字やその他の奇妙な内容が含まれる可能性がある場合は、次を使用してください。