0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[fish-shell] [01] 第一階層のディレクトリを抽出する

Last updated at Posted at 2021-09-18

概要

第一階層のディレクトリを抽出するスクリプト.
fish-shell V2.7.1 で動作確認済み.

コード

#!/usr/bin/env fish
#
# ルートファイルシステムの一覧を表示するプログラム.
# このとき、L_EXCLUDE_DIRS 変数で定義したディレクトリは表示対象外とする.

# find 実行対象外にしたいディレクトリを変数 L_EXCLUDE_DIRS に定義する
set -l L_EXCLUDE_DIRS "/lost+found" \
                      "/snap"       \
                      "/proc"       \
                      "/sbin"       \
                      "/media"      \
                      "/root"       \
                      "/opt"        \
                      "/srv"        \
                      "/cdrom"      \
                      "/lib64"      \
                      "/mnt"        \
                      "/run"        \
                      "/tmp"        \
                      "/lib"        \
                      "/dev"        \
                      ""

# ファイルシステムの第一階層ディレクトリを動的に取得して、変数 L_TARGET_DIRS に格納する
set -l L_TARGET_DIRS  ( find / -maxdepth 1 -mindepth 1 -type d )

echo "-------------------------------"
echo "[途中結果] L_TARGET_DIRS の内容"
echo "-------------------------------"
for i in $L_TARGET_DIRS
  # 空行は表示しない
  if test ! -z {$i}
    echo $i
  end
end

# L_TARGET_DIRS から L_EXCLUDE_DIRS に書かれた要素を削除する.
for i in ( seq 1 (count $L_EXCLUDE_DIRS) )
  # 「string」は fish-shell のコマンドである.
  # $L_TARGET_DIRS のうち、$L_EXCLUDE_DIRS[$i] に一致する文字列を '' に置換している.
  set L_TARGET_DIRS ( string replace $L_EXCLUDE_DIRS[$i] '' $L_TARGET_DIRS )
end

echo ""
echo "-------------------------------"
echo "[最終結果] L_TARGET_DIRS の内容"
echo "-------------------------------"
for i in $L_TARGET_DIRS
  # 空行は表示しない
  if test ! -z {$i}
    echo $i
  end
end

実行結果

中間結果 では、find / -maxdepth 1 -mindepth 1 -type d の結果が全て表示されているが、
その後の 最終結果 では、L_EXCLUDE_DIRS で定義したディレクトリが除外されている.

-------------------------------
[途中結果] L_TARGET_DIRS の内容
-------------------------------
/lost+found
/export
/snap
/proc
/sbin
/media
/root
/opt
/var
/srv
/sys
/boot
/cdrom
/lib64
/bin
/mnt
/run
/home
/tmp
/lib
/dev
/usr
/etc

-------------------------------
[最終結果] L_TARGET_DIRS の内容
-------------------------------
/export
/var
/sys
/boot
/bin
/home
/usr
/etc

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?