fiz.js
やなどのファイル パスが与えられた場合dir/buz.js
、サフィックスを削除して を取得するにはどうすればよいfiz dir/buz
ですか?
私のベストショット(もっとシンプルなものを探しています):
find -name '*.js'| \ xargs -I{} エコー {} | \ sed 's/.js$//' | \ xargs -I{} mv {}.js {}
fiz.js
やなどのファイル パスが与えられた場合dir/buz.js
、サフィックスを削除して を取得するにはどうすればよいfiz dir/buz
ですか?
私のベストショット(もっとシンプルなものを探しています):
find -name '*.js'| \ xargs -I{} エコー {} | \ sed 's/.js$//' | \ xargs -I{} mv {}.js {}
を使用して再帰的なファイルリストを取得することbash
により、(バージョン4)だけでそれを行うことができます。globstar
$ shopt -s globstar
$ for i in **/*.js ; do echo "$i" "${i%.js}" ; done
bash の man ページの場合:
globstar
設定されている場合、パス名展開コンテキストで使用されるパターン ** は、すべてのファイルと 0 個以上のディレクトリおよびサブディレクトリに一致します。パターンの後に / が続く場合、ディレクトリとサブディレクトリのみが一致します。
${x%ext}
ext
の末尾から削除し$x
ます。詳細については、文字列操作を参照してください。
find -name '*.js'| xargs -I file rename 's/\.js$//' file
それは機能し、既存のファイルを上書きする場合は、-f を追加して名前を変更する必要があります (rename -f)。
echo "fiz.js"|awk -F. '{print $1}'
echo "dir/buz.js"|awk -F. '{print $1}'
これは私のために働く:rename ".js" "" *.js