GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでスペースと特殊文字を含むファイル名を操作する方法

私たちは非常に定期的にファイルやフォルダの名前に出くわします。ほとんどの場合、ファイル/フォルダー名はファイル/フォルダーの内容に関連しており、数字と文字で始まります。英数字のファイル名は非常に一般的で非常に広く使用されていますが、特殊文字を含むファイル/フォルダー名を処理する必要がある場合はそうではありません。

注 :任意のタイプのファイルを使用できますが、簡単で簡単に実装できるように、テキストファイル( .txt )を扱います。 )、記事全体。

最も一般的なファイル名の例は次のとおりです。

abc.txt
avi.txt
debian.txt
...

数値ファイル名の例は次のとおりです。

121.txt
3221.txt
674659.txt
...

英数字ファイル名の例は次のとおりです。

eg84235.txt
3kf43nl2.txt
2323ddw.txt
...

特殊文字があり、あまり一般的ではないファイル名の例:

#232.txt
#bkf.txt
#bjsd3469.txt
#121nkfd.txt
-2232.txt
-fbjdew.txt
-gi32kj.txt
--321.txt
--bk34.txt
...

ここで最も明白な質問の1つは、ハッシュ(#)を持つファイル/フォルダー名を作成/処理するのは誰なのかということです。 、セミコロン(;) 、ダッシュ(-) またはその他の特殊文字。

私はあなたに同意します、そのようなファイル名は一般的ではありません、それでもあなたがそのようなファイル名を扱わなければならないときあなたのシェルは壊れたりあきらめたりしてはいけません。また、技術的に言えば、フォルダ、ドライバ、その他すべてのものがLinuxではファイルとして扱われます。

名前にダッシュ(-)が含まれているファイルの処理

ダッシュで始まるファイルを作成する(-) -abx.txtと言います 。

$ touch -abc.txt
サンプル出力
touch: invalid option -- 'b'
Try 'touch --help' for more information.

上記のエラーの理由は、そのシェルがダッシュの後にあるものをすべて解釈する(-) 、オプションとして、そして明らかにそのようなオプションがないので、エラーです。

このようなエラーを解決するには、Bashシェルに通知する必要があります(これと、この記事の他のほとんどの例は、 BASH用です。 )オプションとして、特殊文字(ここではダッシュ)の後に何も解釈しないでください。

このエラーを解決するには、次の2つの方法があります。

$ touch -- -abc.txt		[Option #1]
$ touch ./-abc.txt		[Option #2]

長いリストを作成するには、コマンドlsまたはls -lを実行して、上記の両方の方法で作成されたファイルを確認できます。

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 11:05 -abc.txt

上記のファイルを編集するには、次のようにします。

$ nano -- -abc.txt 
or 
$ nano ./-abc.txt 

注 : nanoを置き換えることができます 他の任意のエディターでvimと言います として:

$ vim -- -abc.txt 
or 
$ vim ./-abc.txt 

同様に、そのようなファイルを移動するには、次のことを行う必要があります。

$ mv -- -abc.txt -a.txt
or
$ mv -- -a.txt -abc.txt

このファイルを削除するには、次のことを行う必要があります。

$ rm -- -abc.txt
or
$ rm ./-abc.txt 

名前にダッシュが含まれているフォルダに多数のファイルがあり、それらすべてを一度に削除する場合は、次のようにします。

$ rm ./-*
注意事項:

1。 ファイル名の任意の数のハイフンとその出現については、上記で説明したのと同じ規則に従います。 Viz。、 -a-b-c.txt ab-c.txt abc-.txt 、など。

2。 フォルダーを削除するには「rm-rf」を使用する必要があるという事実を除いて、任意の数のハイフンを持つフォルダーの名前とその出現について、上記と同じ規則に従います。 ‘as:

$ rm -rf -- -abc
or
$ rm -rf ./-abc

名前にHASH(#)が含まれるファイルの処理

記号# BASHでは非常に異なる意味を持っています。 #の後のすべて コメントとして解釈されるため、BASHでは無視されます。

例を使用して理解する:

ファイルを作成する#abc.txt

$ touch #abc.txt
サンプル出力
touch: missing file operand
Try 'touch --help' for more information.

上記のエラーの理由は、Bashが#abc.txtを解釈しているためです。 コメント、したがって無視します。したがって、コマンドtouchはファイルOperandなしで渡されたため、エラーになります。

このようなエラーを解決するには、BASHにを解釈しないように依頼することができます。 コメントとして。

$ touch ./#abc.txt
or
$ touch '#abc.txt'

作成したファイルを次のように確認します:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 12:14 #abc.txt

次に、名前に#が含まれるファイルを作成します。 物乞いを除いてどこでも。

$ touch ./a#bc.txt
$ touch ./abc#.txt

or
$ touch 'a#bc.txt'
$ touch 'abc#.txt'

ls-l」を実行します ‘確認するには:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 12:16 a#bc.txt
-rw-r--r-- 1 avi avi 0 Jun  8 12:16 abc#.txt

2つのファイルを作成するとどうなりますか( a など) および#bc )一度に:

$ touch a.txt #bc.txt

作成したファイルを確認します:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 12:18 a.txt

上記の例から明らかなように、ファイル「 a」のみが作成されました。 ‘およびファイル‘ #bc ‘は無視されました。上記の状況をうまく実行するために、私たちはできる

$ touch a.txt ./#bc.txt
or
$ touch a.txt '#bc.txt'

次のように確認します:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 12:20 a.txt
-rw-r--r-- 1 avi avi 0 Jun  8 12:20 #bc.txt

ファイルは次のように移動できます:

$ mv ./#bc.txt ./#cd.txt
or
$ mv '#bc.txt' '#cd.txt'

次のようにコピーします:

$ cp ./#cd.txt ./#de.txt
or
$ cp '#cd.txt' '#de.txt'

次のように、選択したエディターを使用して編集できます。

$ vi ./#cd.txt
or
$ vi '#cd.txt'
$ nano ./#cd.txt
or
$ nano '#cd.txt'

そしてそれを次のように削除します:

$ rm ./#bc.txt 
or
$ rm '#bc.txt'

ハッシュを含むすべてのファイルを削除するには( )ファイル名には次のものを使用できます:

 # rm ./#*

名前にセミコロン(;)が含まれるファイルの処理

ご存じない方のために説明すると、セミコロンはBASHや他のシェルでもコマンド区切り文字として機能します。セミコロンを使用すると、一度に複数のコマンドを実行でき、セパレータとして機能します。セミコロンが含まれているファイル名を扱ったことはありますか?ここにいない場合はそうします。

セミコロンを含むファイルを作成します。

$ touch ;abc.txt
サンプル出力
touch: missing file operand
Try 'touch --help' for more information.
bash: abc.txt: command not found

上記のエラーの理由は、上記のコマンドを実行すると、BASHが touchを解釈するためです。 コマンドとして使用しますが、セミコロンの前にファイルオペランドが見つからなかったため、エラーが報告されます。また、「 abc.txt」という別のエラーも報告されます ‘コマンドが見つかりません。セミコロンBASHが別のコマンドと‘ abc.txtを予期していたためです。 ‘、コマンドではありません。

このようなエラーを解決するには、セミコロンをコマンド区切り文字として解釈しないようにBASHに指示します。

$ touch ./';abc.txt'
or
$ touch ';abc.txt'

注 :ファイル名を一重引用符で囲みました'';であることをBASHに伝えます はファイル名の一部であり、コマンドセパレータではありません。

名前にセミコロンが含まれているファイルとフォルダに対する残りのアクション(つまり、コピー、移動、削除)は、名前を一重引用符で囲むことで簡単に実行できます。

ファイル/フォルダ名の他の特殊文字の処理

ファイル名のプラス記号(+)

余分なものは必要ありません。以下に示すような単純なファイル名のように、通常の方法で実行してください。

$ touch +12.txt 

ファイル名のドル記号($)

セミコロンの場合と同様に、ファイル名を一重引用符で囲む必要があります。残りのことは簡単です。

$ touch '$12.txt'

ファイル名のパーセント(%)

別の方法で行う必要はありません。通常のファイルとして扱います。

$ touch %12.txt

ファイル名のアスタリスク(*)

ファイル名にアスタリスクを含めても何も変更されず、通常のファイルとして引き続き使用できます。

$ touch *12.txt

注 :*で始まるファイルを削除する必要がある場合 、このようなファイルを削除するために次のコマンドを使用しないでください。

$ rm *
or
$ rm -rf *

代わりに、

を使用してください
$ rm ./*.txt

ファイル名の感嘆符(!)

ファイル名を一重引用符で囲むだけで、残りは同じです。

$ touch '!12.txt'

ファイル名のアットマーク(@)

余計なことは何もありません。アットマークのあるファイル名を非rmalファイルとして扱います。

$ touch '@12.txt'

^ファイル名

特別な注意は必要ありません。 ^のファイルを使用してください 通常のファイルとしてファイル名で。

$ touch ^12.txt

ファイル名のアンパサンド(&)

ファイル名は一重引用符で囲む必要があり、準備ができています。

$ touch '&12.txt'

ファイル名の括弧()

ファイル名に括弧が付いている場合は、ファイル名を一重引用符で囲む必要があります。

$ touch '(12.txt)'

ファイル名の中かっこ{}

特別なケアは必要ありません。ただ別のファイルとして扱ってください。

$ touch {12.txt}

ファイル名のシェブロン<>

シェブロンを含むファイル名は一重引用符で囲む必要があります。

$ touch '<12.txt>'

ファイル名の角かっこ[]

角かっこを含むファイル名は通常のファイルとして扱い、特別な注意を払う必要はありません。

$ touch [12.txt]

ファイル名のアンダースコア(_)

それらは非常に一般的であり、余分なものは何も必要ありません。通常のファイルで行ったのと同じことをしてください。

$ touch _12.txt

ファイル名が等しい(=)

等号を使用しても何も変更されないため、通常のファイルとして使用できます。

$ touch =12.txt

バックスラッシュ(\)での処理

バックスラッシュは、次の文字を無視するようにシェルに指示します。セミコロンの場合と同様に、ファイル名を一重引用符で囲む必要があります。残りのことは簡単です。

$ touch '.txt'

スラッシュの特殊なケース

名前にスラッシュ(/)が含まれるファイルを作成することはできません 、ファイルシステムにバグが発生するまで。スラッシュをエスケープする方法はありません。

したがって、‘/ 12.txt’などのファイルを作成できる場合 または‘b / c.txt’ 次に、ファイルシステムにバグがあるか、Unicodeをサポートしているため、スラッシュを使用してファイルを作成できます。この場合、スラッシュは実際のスラッシュではなく、スラッシュに似たUnicode文字です。

ファイル名の疑問符(?)

繰り返しますが、特別な試みをする必要がない例です。疑問符の付いたファイル名は、最も一般的な方法で処理できます。

$ touch ?12.txt

ファイル名のドットマーク(。)

ドット(.)で始まるファイル Linuxでは非常に特別で、ドットファイルと呼ばれます。これらは隠しファイルであり、通常は構成ファイルまたはシステムファイルです。スイッチ「-a」を使用する必要があります ‘または‘ -A lsコマンドを使用 そのようなファイルを表示します。

このようなファイルの作成、編集、名前の変更、および削除は簡単です。

$ touch .12.txt

注 :Linuxでは、ドットがいくつもある場合があります(.) 必要に応じてファイル名を入力します。ファイル名の他のシステムドットとは異なり、名前と拡張子を区切ることを意味するものではありません。次のように、複数のドットを持つファイルを作成できます。

$ touch 1.2.3.4.5.6.7.8.9.10.txt

次のように確認してください:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 14:32 1.2.3.4.5.6.7.8.9.10.txt

ファイル名のコンマ(、)

ファイル名にはカンマをいくつでも含めることができ、余分なものは必要ありません。単純なファイル名として、通常の方法で実行してください。

$ touch ,12.txt
or
$ touch ,12,.txt

ファイル名のコロン(:)

ファイル名にはコロンをいくつでも含めることができ、余分なものは必要ありません。単純なファイル名として、通常の方法で実行してください。

$ touch :12.txt
or
$ touch :12:.txt

ファイル名に引用符(シングルおよびダブル)を含める

ファイル名を引用符で囲むには、交換のルールを使用する必要があります。つまり、ファイル名を一重引用符で囲む必要がある場合は、ファイル名を二重引用符で囲み、ファイル名を二重引用符で囲む必要がある場合は、一重引用符で囲みます。

$ touch "15'.txt"

and

$ touch '15”.txt'

ファイル名のチルダ(〜)

emacsのようなLinuxの一部のエディタ 編集中のファイルのバックアップファイルを作成します。バックアップファイルには、元のファイルの名前に加えて、ファイル名の最後にチルダが付いています。チルダを含む名前のファイルを、次のように任意の場所に置くことができます。

$ touch ~1a.txt
or
$touch 2b~.txt

ファイル名の空白

名前が文字/単語の間にスペースがあるファイルを作成します。たとえば、「こんにちは。私の名前はavishek.txtです」と言います。 」。

ファイル名にスペースを含めることはお勧めできません。読みやすい名前を区別する必要がある場合は、アンダースコアまたはダッシュを使用する必要があります。ただし、そのようなファイルを作成する必要がある場合は、次の文字を無視する円記号を使用する必要があります。上記のファイルを作成するには、この方法で作成する必要があります。

$ touch hi\ my\ name\ is\ avishek.txt

hi my name is avishek.txt

私はあなたが遭遇するかもしれないすべてのシナリオをカバーしようとしました。上記の実装のほとんどは明示的にBASHシェル用であり、他のシェルでは機能しない可能性があります。

私が何か(非常に一般的で人間的な性質)を見逃したと感じた場合は、以下のコメントにあなたの提案を含めることができます。接続を維持し、コメントを続けます。引き続きご注目ください。私たちを好きにして共有し、私たちが広まるのを手伝ってください!


Linux
  1. NFSとは何ですか?Linuxにインストールする方法

  2. Linuxでファイル/ディレクトリの変更、削除、名前の変更を防ぐ方法は?

  3. Linuxで特殊文字を入力するには?

  1. Linuxで出力をファイルとStdoutにリダイレクトする方法

  2. Linuxで.gzファイルと.tar.gzファイルを抽出する方法

  3. Linux でファイルシステムをマウントおよびアンマウントする方法

  1. Linuxで.bz2ファイルを圧縮および解凍する方法

  2. Linuxファイルコマンド:その機能と使用方法

  3. Linux で MB ではなく GB で du を表示するにはどうすればよいですか?