タグ付けされた質問 「directory」

コンピュータファイルを格納するファイルシステム構造。

2
パス構文規則
Unixパス文字列を操作するためのライブラリを書いています。そういうわけで、私はほとんどの人が気にしないであろう構文のいくつかのあいまいなコーナーを理解する必要があります。 たとえば、私が知る限りfoo/bar、foo//bar両方とも同じ場所を指しているようです。 また、~通常はユーザーのホームディレクトリを表しますが、パスの途中にある場合はどうでしょうか。次に何が起こりますか? 考えられるすべてのケースを正しく処理するコードを記述しようとする場合、これらとその他の数十のあいまいな質問に答える必要があります。誰かがこのものの正確な構文規則を説明する決定的なリファレンスを知っていますか? (残念ながら、「Unixパス構文」のような用語を検索すると、$PATH変数を説明する100万ページが表示されます...ヘック、この質問に適したタグを見つけるのに苦労しています!)

3
どうすれば前/次の兄弟ディレクトリにcdできますか?
私はよくこのようなプロジェクトディレクトリのレイアウトを持っています project `-- component-a | `-- files... `-- component-b | `-- files... `-- component-c `-- files... componentファイルがある場所だから、私は通常、ディレクトリの1つで作業します。その後シェルに戻ると、特にすべてのコンポーネントにスクリプトを使用できない変更をいくつか加える必要がある場合は、兄弟ディレクトリに移動する必要があることがよくあります。それらの場合、私は前の兄弟ディレクトリーが何であるか、または次の兄弟ディレクトリーが何であるかさえ気にしません。 私は、コマンドを定義することができるprevか、nextそれは単に意志cd私(アルファベットまたは何によって)前のディレクトリ、または次のディレクトリに?cd ../com<TAB><Arrow keys>いつもタイピングは少し古くなっているからです。

4
正規表現に一致するサブディレクトリの名前を再帰的に変更する
と呼ばれるフォルダを持つメディアサーバーがありますSeries。(/media/Expansion2/Series/) その中で、私は(驚き!)TVシリーズを持っています。これらは単なるショー名です。たとえば、/media/Expansion2/Series/The Big Bang Theory/ 各ショーのフォルダー内(および問題がある場所です)にシーズンフォルダーがあります。私は現在、次の2つの規則が混在しています(おそらくいくつかの規則に加えて): /media/Expansion2/Series/The Big Bang Theory/The Big Bang Theory Season 1 /media/Expansion2/Series/The Big Bang Theory/Season 2 最後に、すべてのフォルダの名前を単にに変更しますSeason #。 正規表現として、私はおそらく次のようなことを言うでしょう s/.*(Season \d)/$1 フォルダーにのみ適用され、ファイルには適用されません。これは約50以上のshowサブフォルダ用であることにも言及する必要があるため、/media/Expansion2/Series/レベルから開始して各シリーズを調べる必要があります:)

1
サブファイルやフォルダの内容に関する情報ではなく、指定したディレクトリに関する情報だけをlsに表示させるにはどうすればよいですか?
たとえば、ホームディレクトリに「foo」というフォルダがあるとします。所有者、グループ、権限などの情報を入手したい... 次に、これを実行して情報を取得しようとします。 cd ~ ls -l foo もちろん、「foo」の内容の情報をリストするようになりました それから私はこのようなことをすることができました cd ~ dir=foo ls -l $foo/.. | awk 'BEGIN { dir="'$foo'" } { if($9 == dir) { print $0 } }' しかし、これを行う簡単な方法はありませんか?
10 directory  ls 


6
awk内にファイルが存在するかどうかをどのように確認しますか?[-d 'ファイル名']失敗
存在しないホームディレクトリセットを持つユーザーのリストを生成しようとしています。これはawkで実行できるはずですが、構文に問題があります。 ]で「無効な構文」と何度も言われます。何が悪いのですか? awk -F: '{ if(![ -d "$6"]){ print $1 " " $3 " " $7}}' /etc/passwd 私がおそらく最終的に使用するコードは次のとおりです。 awk -F: '{if(system( "[ -d " $6 " ]") == 1 && $7 != "/sbin/nologin" ) {print "The directory " $6 " does not exist for user " $1 }}' /etc/passwd そして、私はここに関連する質問があります。
10 bash  awk  directory 

1
同じ内容のディレクトリ内のすべてのフォルダを検索します
Ubuntuで、ディレクトリ内の重複するフォルダー(つまり、同じ内容のフォルダー)を見つけるものはありますか?重複するファイル(fdupesなど)を見つけるためのコマンドラインツールは既にいくつかあると思いますが、代わりに重複するフォルダーを見つけたいと思います。つまり、ファイル名と他のメタデータは異なる場合がありますが、それらに含まれるファイルの内容に関して一致するフォルダーを見つけます。

1
なぜrmdirと2つの別々のシステムコールのリンクを解除するのですか?
ここに私がしばらく疑問に思った何かがあります: [15:40:50][/tmp]$ mkdir a [15:40:52][/tmp]$ strace rmdir a execve("/usr/bin/rmdir", ["rmdir", "a"], [/* 78 vars */]) = 0 brk(0) = 0x11bb000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff3772c3000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=245801, ...}) = 0 mmap(NULL, 245801, …

2
書き込み権限のみのフォルダは役に立たない…
何年もの間Linuxで働いており、自由な時間を自分自身で見つけたので、いくつかの基本を再訪することにしました。だから私は権限に関するもの(ソースコードをチェックせずに)とそのフォルダーの特別なケースを読み直し、(特定のユーザー/の)フォルダーの権限について新しい(少なくとも私には...)考え方を思いついたgroup / others):次のように、フォルダーを2列のテーブルとして想像します。 filename | inode foo | 111 bar | 222 読み取り権限あなたが読むことができる手段(およびリスト)表の左欄、書き込みテーブルにエントリを追加したり削除する権限の対応、および実行 iノードにファイル名から変換することができることに許可相当し; つまり、フォルダのコンテンツにアクセスできます。 私はいくつかの実験を行いましたが、結果はすべて私の「世界観」と一致していますが、1つの結論は避けられないようd-w-------です。権限を持つフォルダはまったく役に立たないということです。詳しく説明する:その内容を一覧表示できない、内部に存在することがわかっているファイルを読み取ることができない(名前をiノードに変換できないため)、ファイルを削除または名前変更または追加することはできません。 、およびハードリンクを追加することもできません(おそらく、これは名前とiノード番号を追加することを意味します。つまり、両方を知っていることになります。つまり、両方を知っているため、実行権限の設定を解除する目的に違反しています)。 。そこにあればもちろん、ある一つのこのようなフォルダ内のファイルは、あなたがその内容を削除することはできませんので、あなたは、どちらか、そのフォルダを削除することはできません。 だから...私は2つの質問をしたいと思います: 私のこの類推は正しいですか、それとも大きな失敗ですか? 前の回答とは無関係には、そこにある任意の説明に従って権限でフォルダを持つことが適切である状況は?


4
サブディレクトリを含まないディレクトリを見つける
スクリプトはkshです。現在のディレクトリの直下にある、サブディレクトリではなくファイルのみを含むすべてのディレクトリ名を検索する必要があります。 ls -alR(dディレクトリの)最初のフィールドの最初の文字の出力を使用して再帰的に解析できることを知っています。awk解析して見つけるのに最適な方法だと思います。 たとえばls -al、現在のディレクトリの単純な出力は次のとおりです。 drwxr-xr-x 22 af staff 748 18 Mar 22:21 . drwxr-xr-x 5 root admin 170 17 Mar 18:03 .. -rw------- 1 af staff 3 17 Mar 16:37 .CFUserTextEncoding drwxr-xr-x 5 af staff 170 17 Mar 17:12 Public drwxr-xr-x 9 af staff 306 18 Mar 17:40 Sites …
10 shell  find  directory  ls  ksh 

1
「ドット」ファイル「。」のサイズ 4096を超えますか?
今日、サイズが4MBの「空の」ディレクトリを見つけました。 目に見える内容がなかったので試してみましたls -lah。これにより、いくつかの隠しファイルが表示されました(あまり大きくありません)。ディレクトリが非常に大きい理由を検索すると、ドットファイル(.)のサイズが3.9MBであることがわかりました。 そのファイルには何が保存されますか?それは同じディレクトリへの単なるリンクではありませんか? シェルの出力(匿名化)は次のとおりです。 -bash# more /proc/version Linux version 2.6.18-8.1.15.el5 (mockbuild@builder6.centos.org) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Mon Oct 22 08:32:04 EDT 2007 -bash# pwd /data/foo/bar/tmp -bash# ls -lah total 4.1M drwxrwxrwx 3 nobody nobody 3.9M Nov 21 10:02 . drwxrwxrwx 16 nobody nobody 4.0K Aug …

6
どうすればディレクトリのみの検索を使用できますか
これにより、「Dropnot」のさまざまなサブディレクトリの下にある多数のファイルが見つかります $ locate Dropnot でディレクトリの場所だけを見つけることはできますlocateか?(「Dropnot」がどのディレクトリにあるか) したがって、Dropnotがにある場合/home/me/、それが返される唯一のエントリです。 もしそうなら、最も簡単な/最短の方法は何ですか? できれば、それを手探りで模索するのではなく、フラグまたはシンボルを使用するのが望ましいですが、私はオプションとして何でも取ります。 行末にある種のDropnot $を使用しているのでしょうか?(しかし動作しませんでした)。
10 directory  locate 

2
現在のディレクトリのサブディレクトリを一覧表示する正しい方法はありますか?
ディレクトリのサブディレクトリを見つけることができます ls -d -- */ または ls -l | grep "^d" しかし、これらは両方とも間接的に見えるので、ディレクトリだけを見つける標準的な方法があると思います。これを行う正しい方法はありますか?そうでない場合、これらのいずれかがエッジケースで望ましくない動作につながるのでしょうか?(シンボリックリンク、隠しディレクトリなど)

5
ディレクトリからのファイルの変更を検出するBashスクリプト
2秒間隔でディレクトリ内のファイルが変更されたかどうかを検出するスクリプトを作成しようとしています。これまでのところ、 #!/bin/bash for FILE in "${PWD}/*" do SUM1="$(md5sum $FILE)" sleep 2 SUM2="$(md5sum $FILE)" if [ "$SUM1" = "$SUM2" ]; then echo "Identical" else echo "Different" fi done これにより、値「同一」が1回だけ出力されます。各ファイルをチェックして、各ファイルの「同一」または「異なる」を出力します。 編集:これはinotify-toolsパッケージをインストールせずに実行できますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.