#author("2024-11-17T17:05:51+09:00","default:k1rou","k1rou") #author("2024-11-17T17:10:27+09:00","default:k1rou","k1rou") *Linuxのファイル操作 [#x21bb6a9] -[[Linuxコマンド]] *ファイルとディレクトリの表示 [#h1db7b15] **ls [#pa642746] -ls -l <file-name> ※詳細情報を表示 ls -lk ※ファイルサイズ:KB単位 ls -lh ※ファイルサイズ:見やすい単位 ls -lt ※日付順(昇順) ls -ltr ※日付順(降順) ls -lS ※ファイルサイズ(降順) ls -lSr ※ファイルサイズ(昇順) ls -lR ※再帰的に配下のディレクトリも表示 ls -la ※「.」で始まるファイルも含めて表示 ls -lA ※「.」で始まるファイルも含めて表示(カレントディレクトリ「.」と親ディレクトリ「..」は除く) ls -lF ※ファイルの種類を末尾に表示(ディレクトリ:/、実行ファイル:*、シンボリックリンク:@) ls -li ※iノード番号を表示 ls -lu ※最終参照日時を表示 ls -l --full-time ※日付を秒以下の単位も含めて表示 -ls -d ※ディレクトリの情報を表示 ls -ld ※カレントディレクトリの情報を表示 ls -ld <directory-name> ※指定したディレクトリの情報を表示 **stat [#a010de80] -stat <file-name> ※詳細情報を表示 **file [#ga2b22ea] -file <file-name> ※ファイルの種別を表示([[マジックナンバー]]を元に表示) **tree [#fca1802d] -tree ※ディレクトリをツリー構造で表示 **dirname [#d0d9ca60] -dirname <path> ※パスからディレクトリ部分を取得 **basename [#d0d9ca60] -basename <path> ※パスからファイル名部分を取得 *ファイルとディレクトリの検索 [#be7b7426] **find [#x6d2c105] -find <target-dir> <search-formula> --検索式:ファイル名、ディレクトリ名 find <target-dir> -name "<keyword>" ※キーワードにワイルドカードが指定できる find <target-dir> -iname "<keyword>" ※大文字/小文字を区別しない find <target-dir> -regex "<keyword>" ※正規表現を使う --検索式:ファイルの種類 find <target-dir> -type f ※ファイル find <target-dir> -type d ※ディレクトリ find <target-dir> -type l ※シンボリックリンク --検索式:最終更新日 find <target-dir> -mtime -1 ※過去1日以内 find <target-dir> -mtime -10 ※10日前の翌月以降 find <target-dir> -mtime +10 ※10日前の前日以前 find <target-dir> -mtime 10 ※10日前の24時間 find <target-dir> -daystart -mtime +10 ※10日前の前日以前(0時を基準にする) --検索式:最終アクセス日 find <target-dir> -atime -10 ※過去10日以内アクセスあり find <target-dir> -atime +10 ※10日超アクセスなし find <target-dir> -atime 10 ※10日前の24時間 --検索式:アクセス権 find <target-dir> -perm <mode> --検索式:サイズ find <target-dir> -size <size> ※ファイルサイズ(ブロック単位) --検索式:ユーザー名 find <target-dir> -user <username> --マッチしたファイルにコマンド実行: find <target-dir> -exec <command> {}\; ※確認なし find <target-dir> -ok <command> {}\; ※確認あり **locate [#l0095509] -locateデータベースを使ってファイルを検索する -updatedbコマンドでlocateデータベースを更新してから実行する --locate "<keyword>" **updatedb [#e4280e37] -locateコマンドが検索に使うlocateデータベースを更新する --updatedb <option> updatedb updatedb -e <directory> ※指定したディレクトリを除いて更新する --設定ファイル(/etc/updatedb.conf) ---PRUNEPATHS:指定したディレクトリを除く(登録しない) ---PRUNEFS:指定したファイルシステムを除く(登録しない) **which [#y8dbd310] -コマンドの絶対パスを表示する --which <command> which <command> ※最初に見つかったファイルのみ表示 which <command> ※最初に見つかったファイルのみ表示(実行されるコマンド) which -a <command> ※全ての見つかったファイルを表示 ※環境変数PATHに登録されているディレクトリを左から検索する **whereis [#kd1cf9e0] -コマンドのバイナリファイル、ソースコード、マニュアルが置かれている場所を表示する --whereis <option> <command> whereis <command> whereis -b <command> ※バイナリファイル whereis -s <command> ※ソースコード whereis -m <command> ※マニュアル whereis -a <command> ※最初に検出したものだけでなく、全てマッチしたものを表示する whereis -ab <command> ※全てのバイナリファイル **type [#n99985b9] -コマンドがどのようなコマンドかを表示する(エイリアスかどうかなど) --type <option> <command> type <command> type -a <command> *ファイルとディレクトリのコピー [#k2f71651] **cp [#ee0729ec] -cp <copy-file> <target-file> -cp <copy-file> <target-directory> cp -f ※同名のファイルがあった場合は上書き cp -i ※同名のファイルがあった場合は上書きするか確認する cp -p ※コピー元ファイルの属性を保持してコピーする cp -d ※シンボリックリンクをコピーする cp -a ※可能な限りコピー元ファイルの状態を保持してコピーする(-dpRと同じ) cp <file> . ※カレントディレクトリにコピー cp <file> ~ ※ホームディレクトリにコピー -cp <copy-directory> <target-directory> cp -r ※ディレクトリ内を再帰的にコピーする cp -R ※ディレクトリ内を再帰的にコピーする -cp <copy-file1> <copy-file2> <..> <target-directory> ※複数のファイルをコピーする(最後の引数がコピー先になる) **dd [#c0743646] -ブロック単位でファイルをコピー -デバイスの情報をファイルに出力することができる --dd if=<input> of=<output> dd if=/dev/cdrom of=cdrom.iso *ファイルとディレクトリの移動 [#b45b9580] **mv [#q388b32b] -mv <copy-file> <target-file> -mv <copy-file> <target-directory> mv -f ※同名のファイルがあった場合は上書き mv -i ※同名のファイルがあった場合は上書きするか確認する mv <file-name1> <file-name2> ※同じディレクトリ内での移動でファイル名の変更ができる *ファイルとディレクトリの削除 [#j32414da] **rm [#vcd75e1e] -rm <file-name> rm -f ※確認しないで削除 rm -i ※削除するか確認する -rm <directory-name> rm -r ※ディレクトリを再起的に削除する rm -R ※ディレクトリを再起的に削除する rm -rf ※確認しないで削除 **rmdir [#l06e5681] -rmdir <directory-name> ※空のディレクトリを削除(中にファイル等がある場合は削除できない) *ディレクトリの作成 [#mfca69d1] **mkdir [#j0f9cff1] -mkdir <directory-name> -mkdir -m ※指定したアクセス権で作成 mkdir -m 777 -mkdir -p ※親ディレクトリも作成する mkdir -p 1st/2nd/3rd *ファイルのタイムスタンプを変更 [#g8dc3a88] **touch [#ta3b47bf] -touch <file-name> touch <file-name> ※オプションなしの場合は現在時刻に変更 touch -a ※最終参照日時(Access)のみを変更 touch -m ※修正日時(Modify)のみを変更 -touch -t [((CC)YY)MMDDhhmm(.SS)] ※指定した日時に変更 touch -t 202010222222.12 *ファイルのチェックサム [#v562a22c] -「[[チェックサム]]」参照 *ファイルの参照 [#md5aa07b] **more [#r3443b7b] -more <file-name> --テキストファイルを1画面ずつスクロール表示する --Spaceキー -1行進む --Enterキー -次の画面に進む --q -終了 **less [#m296dfe6] -less <file-name> --スクロール ---k、↑ ※上に1行 ---j、↓、[Enter] ※下に1行 ---f、[Space] ※下に1画面 ---b、[Space] ※上に1画面 ---q ※終了 --キーワード検索 ---/ [文字列] ※下方向に文字列を検索 ---? [文字列] ※上方向に文字列を検索 ---n ※次を検索 ---[Shift] + n ※前を検索 --操作マニュアル ---h ※操作マニュアルを表示 ---q ※操作マニュアルを終了 **view [#f069f801] -view <file-name> **diff [#a918c54f] **file [#c7af4edc] -file ※ファイルの種類を確認 **xxd [#d5c86a1f] -バイナリファイルを16進数または2進数で表示する(左にアドレス、右にASCIIを表示して出力) --xxd <file> ※16進数で表示 --xxd -b <file> ※2進数で表示 cat <file> | xxd -b | cut -c11-63|tr -d ' \n'|fold -6|xargs -バイナリファイルを16進数で表示する(プレーン16進ダンプで出力) --xxd -p <file> ※16進数で表示 --xxd -p -c --xxd -p -c ※1行で表示する文字数を指定(最大256) echo -n "Base64" | base64 -d | xxd -p -c 256 ※Base64の文字列をバイナリにデコード後、16進数の文字列に変換して表示する -xxd -r ※16進数をバイナリに変換 --xxd -r <hex-file> <bin-file> ※16進数のダンプファイルからバイナリファイルを作成 --xxd -r -p ※16進数をバイナリに変換(入力がプレーン16進ダンプ) echo 48656c6c6f20576f726c64210a | xxd -r -p echo -n "16進数" | xxd -r -p | base64 ※16進数の文字列をバイナリに変換後、Base64で表示する echo 0100000101000010 | bc --ibase=2 --obase=16 | xxd -r -p ※2進数の文字から変換 echo "obase=16; ibase=2; 0100000101000010" | bc | xxd -r -p ※2進数の文字から変換 **hexdump [#g847625d] hexdump -C ※16進数とASCII文字で表示 -2バイト単位で処理 *リトルエンディアンで出力される(最下位のバイトから順番に出力) hexdump -o ※8進数で表示(6桁/2バイト) hexdump -d ※10進数で表示(5桁/2バイト) hexdump -x ※16進数で表示(4桁/2バイト)(デフォルト) -1バイト単位で処理 hexdump -b ※8進数で表示(3桁/1バイト) hexdump -c ※ASCII文字で表示(1文字/1バイト) *ファイルの変換 [#bf9eae4f] -「[[Linuxのファイル操作(変換)]]」参照 --nkf --iconv *メタキャラクタ [#ie8034fd] **メタキャラクタの種類 [#a4b1626e] -ワイルドカード --* ※0文字以上の文字/文字列 --? ※任意の1文字 --[] ※カッコ内に記述した文字のいずれか1文字にマッチする [abc] [a-z] [0-9] [!0-9] ※!はマッチしない範囲の指定(not演算子) [^0-9] ※^はマッチしない範囲の指定(not演算子) -ブレース展開 --{} ※「,」で区切られた文字列のいずれかにマッチする [1,2] [01,02] -エスケイプ文字 --\ (バックスラッシュ) --メタキャラクタの直前に記述すると通常の文字として扱うようになる *関連用語 [#l171f762] -[[Linuxのファイル編集]] -[[Linuxのファイル管理]] -[[Linuxのテキスト処理]]