ファイルのリストがあります
-rw-rw-r-- 1 t t 24813 Oct 23 2002 fig8_21.gif
-rw-rw-r-- 1 t t 2259 Oct 23 2002 fig8_21t.gif
-rw-rw-r-- 1 t t 35331 Oct 23 2002 fig8_23.gif
-rw-rw-r-- 1 t t 2610 Oct 23 2002 fig8_23t.gif
-rw-rw-r-- 1 t t 19970 Oct 23 2002 fig8_24.gif
-rw-rw-r-- 1 t t 2019 Oct 23 2002 fig8_24t.gif
-rw-rw-r-- 1 t t 54623 Oct 23 2002 fig8_3.gif
-rw-rw-r-- 1 t t 3657 Oct 23 2002 fig8_3t.gif
-rw-rw-r-- 1 t t 35861 Oct 23 2002 fig8_4.gif
-rw-rw-r-- 1 t t 2344 Oct 23 2002 fig8_4t.gif
たとえば、コピーして上書きを<...>t.gif
使用して上書きしたいと思います。<...>.gif
fig8_4.gif
fig8_4t.gif
私は<...>t.gif
これらのファイルを見つけることから始めますfind . -regex ".*t\.gif"
。次に、ファイル名の削除を使用したいのですが、basename
次の警告が表示されるのはなぜですか?
$ find . -regex ".*t\.gif" -execdir basename {} \;
find: The relative path `~/program_files/internet/SSH_tunneling/' is included in the PATH environment variable, which is insecure in combination with the -execdir action of find. Please remove that entry from $PATH
$ find . -regex ".*t\.gif" | xargs basename
basename: extra operand ‘./f10_1t.gif’
ミッションをどのように進めますか?
使用してはいけませんかfind
?
ベストアンサー1
はい、可能です。 1つのアプローチは次のとおりです。
cd /den/of/gifs && \
for f in ./*t.gif; do
mv -- "${f%%t.gif}.gif" "$f"
done
最も長い一致文字列を削除するための${var%%pattern}
標準/POSIX構文。sh
模様年末から始まります$var
。