[解決済み] Linuxで複数のファイルを検索し、名前を変更する
2023-05-01 20:50:10
質問
私は、以下のようなファイルを持っています。
a_dbg.txt, b_dbg.txt ...
の中に
Suse 10
システム内にあります。私は、これらのファイルから "_dbg" を削除して名前を変更する bash シェル スクリプトを書きたいと思います。
Google は私に
rename
コマンドを使うことを勧められました。そこで、私は以下のコマンドを実行しました。
rename _dbg.txt .txt *dbg*
の上で
CURRENT_FOLDER
私の実際の
CURRENT_FOLDER
には、以下のファイルが含まれています。
CURRENT_FOLDER/a_dbg.txt
CURRENT_FOLDER/b_dbg.txt
CURRENT_FOLDER/XX/c_dbg.txt
CURRENT_FOLDER/YY/d_dbg.txt
を実行した後
rename
コマンドを実行します。
CURRENT_FOLDER/a.txt
CURRENT_FOLDER/b.txt
CURRENT_FOLDER/XX/c_dbg.txt
CURRENT_FOLDER/YY/d_dbg.txt
このコマンドは再帰的に実行されないので、すべてのサブディレクトリのファイル名を変更するようにするにはどうしたらよいでしょうか。例えば
XX
と
YY
私は、名前が予測できない非常に多くのサブディレクトリを持つことになります。また、私の
CURRENT_FOLDER
はまた他のファイルを持つことになります。
どのように解決するのですか?
この場合
find
を使うと、マッチする全てのファイルを再帰的に見つけることができます。
$ find . -iname "*dbg*" -exec rename _dbg.txt .txt '{}' \;
EDITです。
というのは
'{}'
と
\;
は?
は
-exec
引数を指定すると、find は
rename
を実行させる。
'{}'
はファイルのパス名で置き換えられます。最後のトークンは
\;
はexec式の終わりを示すためにのみ存在します。
これら全てはfindのマニュアルページでうまく説明されています。
-exec utility [argument ...] ;
True if the program named utility returns a zero value as its
exit status. Optional arguments may be passed to the utility.
The expression must be terminated by a semicolon (``;''). If you
invoke find from a shell you may need to quote the semicolon if
the shell would otherwise treat it as a control operator. If the
string ``{}'' appears anywhere in the utility name or the argu-
ments it is replaced by the pathname of the current file.
Utility will be executed from the directory from which find was
executed. Utility and arguments are not subject to the further
expansion of shell patterns and constructs.
関連
-
deepin20のサブネットマスクはどこですか?deepinのサブネットマスクを表示するためのヒント
-
rsyncとinotfiyの組み合わせでリアルタイムバックアップ問題を実現
-
[解決済み] gzip: stdin: gzip 形式ではありません tar: 子プロセスはステータス 1 を返しました。エラーは回復不可能: 現在終了中
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] フォルダとそのサブフォルダ/ファイルのパーミッションを一括で変更する方法
-
[解決済み] Linuxのディレクトリ内のファイルを再帰的にカウントする
-
[解決済み] grep --exclude/--include構文を使って特定のファイルをgrepしないようにする
-
[解決済み] Linuxのコマンドラインで複数ファイルの文字列を置換する方法
-
[解決済み] シェルスクリプトからエコーを使わずにパスワードを取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ゼロからLinuxのisoイメージを作る方法(グラフィックチュートリアル)
-
Linuxのデスクトップの背景を画像で引き伸ばし表示にする方法とは?
-
rsyncとinotfiyの組み合わせでリアルタイムバックアップ問題を実現
-
Centos7のインストールと展開無料のconfluence wikiの(知識ベース)詳細な操作手順
-
TclError: 表示名がなく、$DISPLAY環境変数もない。
-
floor'への未定義の参照/`&'への未定義の参照
-
[解決済み] find .コマンドでディレクトリを除外する方法
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] Linuxで特定のポートで動作しているプロセスを停止させる方法は?
-
[解決済み] find と sed を使って再帰的にファイル名を変更する