「Human (2012)」のようなフォルダを入力し、名前を変更するにはどうすればいいですか?

「Human (2012)」のようなフォルダを入力し、名前を変更するにはどうすればいいですか?

コマンドライン経由で FTP を操作しているのですが、2 つの問題が発生します。次のようなフォルダーの名前を変更したり、フォルダーに入力したりできません。

dir /home/folder1/Human (2012)

私は試した:

cd ~/folder1/Human\ (2012)

ここで、 というメッセージを受け取りますthe folder does not exist

mv ~/folder1/Human\ (2012)

この場合、次のようなメッセージが表示されます。

syntaxfailure at (

この問題をどうすれば解決できますか?

答え1

パスを二重引用符で囲むこともできます:

cd ~/"folder1/Human (2012)"

または、 (、 (スペース)のエスケープ シーケンスを指定する必要があります(これらは特殊文字であるため)。)

cd ~/folder1/Human\ \(2012\)

そして

mv ~/"folder1/Human (2012)"

エスケープシーケンスあり:

mv ~/folder1/Human\ \(2012\)

答え2

スペースの前のについては正しい考えです\。これは、括弧を含むすべての特殊文字に適用されます。開き括弧の前にバックスラッシュを 1 つ置き、閉じ括弧の前にもう 1 つバックスラッシュを置くと、機能します。

このような場合には、タブ補完が役立ちます。ファイル名を入力し始めてから を押すと、Tabファイル名の残りの部分が自動的に補完され、必要に応じてバックスラッシュが挿入されます。(ファイル名をまだ十分に入力していないため、どのファイルを指しているのかが明確でない場合でも、bash は可能な限りファイル名を自動補完します。タブを 2 回押すと、ファイル名の補完候補の一覧が表示されます。)

答え3

これを行う方法は、"ファイルまたはディレクトリを指定するときにマークを使用することだという snoop の意見に同意します。

ただし、名前を変更する必要があるディレクトリが多数ある場合は、 を使用して、よりわかりやすい名前に変更できます。Rename は、ファイルとディレクトリの名前を変更する点を除いてrename、 と似ていますが、は通常、ファイルの内容を編集するために使用されます。次に例を示します。sedrenamesed

rename 's/ //g;s/\(//g;s/\)//g' ~/folder1/*

したがって、次のディレクトリが にあるとします~/folder1

Human (2012)
Human (2011)
Human (2010)

代わりに次のように名前が変更されます:

Human2012
Human2011
Human2010

詳細については、次のコマンドを実行してください。

man rename

関連情報