Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2811

Linux: LSコマンドでファイルのみ・ディレクトリのみを表示する方法

$
0
0
バッチで必要になったので調べたついでにメモしておきます。 実施環境: Linux [testuser@testhost ~]$ uname -a Linux testhost 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux [testuser@testhost ~]$ echo $SHELL /bin/bash 単にlsコマンドでディレクトリかどうかを判別する場合、"-l"オプションで先頭の文字が"d"であるかを確認すればディレクトリであるかは判別できます。 ただ、更新日時やサイズなど余分な情報も出てきてしまうため、ファイル名部分をバッチで利用する場合はこの方法ですと扱いづらいです。 Linux [testuser@testhost ~]$ ls -l -r-------- 1 testuser testgrp 0 Jun 6 13:04 test.conf drwxr-xr-x 2 testuser testgrp 6 Jun 6 13:04 test_dir --w------- 1 testuser testgrp 0 Jun 6 13:04 test.log ---x------ 1 testuser testgrp 0 Jun 6 13:04 test.sh ではどうするのかというと、"-F"オプションを使用します。 Linux [testuser@testhost ~]$ ls -F test.conf test_dir/ test.log test.sh* "-F"オプションを使用すると、対象のタイプに応じて末尾に記号が付与されます。 通常のファイルでは何も付与されませんが、実行権のあるファイルの場合は"*"が、ディレクトリの場合は"/"が付与されます。 そのため、grepをかけることでファイルのみ、ディレクトリのみの表示が可能となります。 Linux [testuser@testhost ~]$ ls -F | grep -v / test.conf test.log test.sh* [testuser@testhost ~]$ ls -F | grep / test_dir/ 末尾の記号を削除したい場合はsedコマンドを使用します。 Linux [testuser@testhost ~]$ ls -F | grep -v / | sed s/\*$//g test.conf test.log test.sh [testuser@testhost ~]$ ls -F | grep / | sed s/\\/$//g test_dir

Viewing all articles
Browse latest Browse all 2811

Trending Articles