1

ls -Al outputファイルまたはディレクトリ名を解析して取得する必要があります

ls -Al出力:

drwxr-xr-x  12 s162103  studs         12 march 28 2012 personal domain
drwxr-xr-x   2 s162103  studs          3 march 28 22:32 public_html
drwxr-xr-x   7 s162103  studs          8 march 28 13:59 WebApplication1

私だけを使うべきですls -Al | <something>

例えば:

ls -Al | awk '{print $8}'

ただし$8、ディレクトリ名にスペースがある場合は名前ではないため、これは機能しません。これは名前の一部です。姓を削除したり、以前のものを削除したりするユーティリティがいくつかあるのではないでしょうか? 解決策を見つける必要があります。助けてください!

編集済み: parse ls -Al が悪い考えであることはわかっていますが、上記の構成で正確に解析する必要があります! このようなものを使用する方法はありません

for f in *; do
    somecommand "$f"
done
4

5 に答える 5

4

ls -Alファイル名だけが必要な場合は、解析しないでください。

すべてのファイル名を配列に入れることができます。

files=( * )

または、ファイルを直接反復処理できます。

for f in *; do
    echo "$f"
done

必要なものが特定されlsている場合は、質問を更新して必要なものを指定してください。

于 2013-03-30T18:32:21.963 に答える
3

これはどうですかls -Al |awk '{$1=$2=$3=$4=$5=$6=$7=$8="";print $0}' 、安いトリックだと思いますが、他のものを使いたくないので、これ以上ls -Al良いものは考えられません...

于 2013-03-30T19:42:20.880 に答える
2

コメントに対する@ squiguyリクエストに基づいて、コメントを回答として投稿します。

これだけでどうですか?

  ls -1A

l(L、文字)、a 1(1、数字) の代わりに。ファイルの名前のみがリストされます。

于 2013-03-30T18:36:31.747 に答える
1

find探していることを実行できることも注目に値します。

このディレクトリ内のすべて、次と同等ls:

find . -maxdepth 1

再帰的に、次のようにls -R:

find .

特定のディレクトリ内のディレクトリのみ:

find /path/to/some/dir -maxdepth 1 -type d

md5sumすべての通常のファイル:

find . -type f -exec md5sum {} \;
于 2013-03-30T18:38:23.597 に答える