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


41

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

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


この質問には非常に多くの意見があります。おそらく、@ Ivanの時間を節約するために、最も役立つと思われる答えを受け入れることができますか?
starbeamrainbowlabs

回答:


39

ツリーはあなたにとって非常に便利です。

sudo apt-get install tree

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


27
ls -alR

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


7
またはls -R、すべての詳細が必要ない場合のみ。
マシュー

11
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

4

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。以前は使用していませんでした。


3

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

ただし、-R「フラグ」は再帰オプションであり(rではなく大文字のRに注意してください)、すべてのサブディレクトリも表示されます。

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

隠しファイル/フォルダー(Nautilus のCtrl+ Hと同等)も表示する場合は、-a「all」フラグを追加します。

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

ls -lR

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

ls -lR | less

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


0

Krusaderの使用:

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

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


0

どの程度ノーチラススクリプト

#!/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

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


あなたは書いたdirtree、私はUbuntuの上で、意志この作品を依頼してきたので、DOS形式のオプションを使用して?
wjandrea

はい、Ubuntuのインストールで毎週末実行するように実際にスケジュールしました。ただし、C ++とBoostを使用して構築されているため、バイナリをコンパイルして作成するのは少し難しいでしょう。だからこそ、私はそれをPythonに移植する過程にいます。とにかく、必要に応じてプリコンパイルされたバイナリを提供できます。
アンモルシンジャギ

0

ノーチラス

  1. リストビューでサブフォルダーの展開を有効にする
  2. フォルダーをクリックし、アスタリスク(*テンキーまたはShift+ 8)を押して、1レベルのサブディレクトリーを展開します。アスタリスクを押すたびに、次のレベルが展開されます。

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


-1

これらを.bashrcファイルに入れることができます

function _get_tree(){ ls -alR | while read LINE; do   echo $LINE | grep ":$" > /dev/null;   if [ $? -eq 0 ];   then     VAR=$(echo $LINE | grep ":$"| sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/' | tee /dev/tty);   fi;   echo $LINE | grep "^-" > /dev/null;   if [ $? -eq 0 ];   then     size=${#VAR};     for i in $(eval echo "{1..$size}"); do echo -n ' '; done;     echo -n '..';     echo $LINE | cut -d ' ' -f9;   fi; done; };

alias get_tree='_get_tree'

これで、任意のディレクトリ内でget_treeコマンドを使用でき、階層全体が表示されます。

構文:

$ get_tree

サンプル出力:

   .

    ..test.sh

   |-2

      ..123.log

   |---3

   |-----4

   |-5

   |---6

お役に立てれば !!


あなたは何をしているかを説明しない限り、助けに行かない...
ロン・

-1不十分なコード形式、十分な説明がありません。そして、なぜエイリアスを作成するのですか?
wjandrea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.