3

fiz.jsやなどのファイル パスが与えられた場合dir/buz.js、サフィックスを削除して を取得するにはどうすればよいfiz dir/buzですか?

私のベストショット(もっとシンプルなものを探しています):

find -name '*.js'| \
 xargs -I{} エコー {} | \
 sed 's/.js$//' | \
 xargs -I{} mv {}.js {}
4

4 に答える 4

2

を使用して再帰的なファイルリストを取得することbashにより、(バージョン4)だけでそれを行うことができます。globstar

$ shopt -s globstar
$ for i in **/*.js ; do echo "$i" "${i%.js}" ; done

bash の man ページの場合:

globstar

設定されている場合、パス名展開コンテキストで使用されるパターン ** は、すべてのファイルと 0 個以上のディレクトリおよびサブディレクトリに一致します。パターンの後に / が続く場合、ディレクトリとサブディレクトリのみが一致します。

${x%ext}extの末尾から削除し$xます。詳細については、文字列操作を参照してください。

于 2012-09-01T10:05:05.210 に答える
0
find -name '*.js'|  xargs -I file rename 's/\.js$//' file

それは機能し、既存のファイルを上書きする場合は、-f を追加して名前を変更する必要があります (rename -f)。

于 2013-03-13T08:23:32.983 に答える
0
echo "fiz.js"|awk -F. '{print $1}'

echo "dir/buz.js"|awk -F. '{print $1}'
于 2012-09-01T14:55:56.130 に答える
0

これは私のために働く:rename ".js" "" *.js

于 2016-03-21T17:58:09.030 に答える