web-dev-qa-db-ja.com

ツリー(ディレクトリとそのサブディレクトリ)内のすべてのファイルを一覧表示する方法は?

私のタスクでは、ツリー内のすべてのファイル(ディレクトリ、そのすべてのサブディレクトリ、それらのすべてのサブディレクトリなど)をリストする必要があります。

NautilusまたはKrusaderで表示したいのですが、コマンドラインソリューションも興味深いものです(この場合、ファイルの完全な名前、サイズ、および変更時間を一覧表示する必要があります)。

41
Ivan

tree は非常に便利です。

Sudo apt-get install tree

tree filepathを使用してファイルをリストします。

39
kit.yang
ls -alR

これがおそらく最も簡単な方法です。検索をより細かく制御するために、検索スクリプトをハッキングしています。

27
Oli
find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"

好きなだけprintfフォーマットで遊ぶことができます。これにより、必要な方法でフォーマットすることができます。これは、別のアプリケーションで出力を使用している場合に非常に貴重です。

詳細: http://linux.about.com/od/commands/l/blcmdl1_find.htm

読みやすくするために、columnコマンドを使用してすべてをパイプ処理すると、自動的にサイズが変更されて整列します。

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n" | column -t
11
Oli

Oliが答えたように、findを使用すると、ディレクトリツリー全体を検索できます。

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"

# Where %TY will display the mod. time year as 4 digits
#       %Tm will display the mod. time month as 2 digits
#       %Td will display the mod. time day as 2 digits
#       %s displays the file size in bytes
#       %p displays the full path name of the file

-type fオプションを使用して、結果をファイルのみに制限することもできます。ファイルパターンを照合する場合は、-nameまたは-inameオプション(それぞれ大文字と小文字を区別する一致と大文字と小文字を区別しない一致)が必要です。 findのmanページを読んでください-検索の絞り込み/絞り込みに使用できるオプションがかなりあります。

余談ですが、複数の画面のデータが返されることを期待している場合は、lessを介して結果をパイプすることを忘れないでください。

@Oli:+1何か新しいことも学んだ-column。以前は使用していませんでした。

4
Will

lsは、Ubuntuおよびその他のLinuxおよびUnixオペレーティングシステムのファイルを一覧表示する標準コマンドです。 lsは、これまで出会ったすべてのUnixシステムにインストールされているので、学ぶのに特に役立ちます。デフォルトでは、これを実行すると現在のディレクトリ内のファイルのみが表示されます。

ただし、-R 'flag'はrecursiveオプションです(大文字のRではなく、rではないことに注意してください)すべてのサブディレクトリも同様です。

「詳細」も要求しました-このためには、-lフラグ(番号1ではなく小文字のL)が必要です。これにより、ファイルのアクセス許可情報に加えて、ファイルサイズ、時刻/日付情報、およびファイル名が提供されることに注意してください。

隠しファイル/フォルダーも表示したい場合(同等の Ctrl+H Nautilusで)-a 'all'フラグを追加します。

フラグをマージして、次のようなものを提供できます。

ls -lR

適切なサイズのフォルダーでこれを実行すると、非常に長い出力が生成され、画面が非常に速くスクロールダウンすることがわかります。これを回避するには、lsと呼ばれるプログラムを介してlessの出力を「パイプ」することができます(名前は類似のmoreのパロディです。 。

ls -lR | less

これにより、PageUp/Downとともに上下矢印キーを使用して、より快適な速度で出力を確認できます。

3
8128

このために特別にプログラムを作成しました- Directory Snapshot
ディレクトリを再帰的に反復し、検出されたすべてのファイルとフォルダの名前とサイズを、入力ディレクトリと同様の組織を持つきちんと構造化されたHTMLファイルに保存します。
つまり、これは dir /s または tree /f コマンドのハイパーリンク版と考えることができます。

0

Krusaderの使用:

  1. 検索(Ctl-S)を使用します。
  2. 「サブディレクトリで検索」をオフにします。
  3. 「検索」をクリックします。
  4. 検索が終了したら、「リストボックスにフィード」をクリックします。

これにより、他のパネルなどにドラッグしてロット全体を処理できます。

0
Frank Z.

Nautilusスクリプトはどうですか?

#!/bin/bash
#
# AUTHOR:       (c) 2013 Glutanimate (https://askubuntu.com/users/81372)
# NAME:         DirTree 0.1
# DEPENDENCIES: zenity tree  (install with Sudo apt-get install zenity tree)
# LICENSE:      GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
#
# DESCRIPTION:  Creates a directory tree at the current location. If you want you
#               can filter the output by a pattern (e.g. *.avi to only include avi
#               files).

TITLE=DirTree

# Get working directory
WORKINGDIR="`python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI`"

# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")

# Filter pattern
zenity --question --title "$TITLE" --text "Do you want to filter by a specific file pattern?"

if [ "$?" = "1" ]
  then
      customtree="tree"
  else
      PATTERN=$(zenity --entry --title "$TITLE" --text="Please enter a file pattern (e.g. *.avi)")

         if [ -z "$PATTERN" ]
           then
               exit
           else
               customtree="tree -P $PATTERN"               
         fi

fi

# Directory tree
$customtree "$WORKINGDIR" > "$WORKINGDIR/directorytree_$TIME.txt"

インストール手順: Nautilusスクリプトのインストール方法

0
Glutanimate

ノーチラス

  1. リストビューでサブフォルダーの展開を有効にする
    • 14.04および16.04については、 here を参照してください
    • 17.10および18.04については、 here を参照してください
  2. フォルダーをクリックして、アスタリスク(* テンキー上、または Shift+8)サブレベルを1レベル拡張します。アスタリスクを押すたびに、次のレベルが展開されます。

これはNemoでも機能します。

0
wjandrea