フルファイルパス情報をxargsに渡す

フルファイルパス情報をxargsに渡す

修正日順にjpgファイルを一覧表示し、xargsを使用して数値順(0.jpg、1.jpg、2.jpgなど)に名前を変更するbashスクリプトがあります。これは複数のディレクトリで発生する必要があります。コードは次のとおりです。

ls -1rt "/media/171/" | xargs rename  's/^[^\.]*(\..*)?$/our $i; sprintf("%01d$1", $i++)/e'
ls -1rt "/media/193/" | xargs rename  's/^[^\.]*(\..*)?$/our $i; sprintf("%01d$1", $i++)/e'
ls -1rt "/media/211/" | xargs rename  's/^[^\.]*(\..*)?$/our $i; sprintf("%01d$1", $i++)/e'

問題は、スクリプトを実行するとファイルが正しく一覧表示されますが、xargsで指定されたファイルが見つからないというエラーが発生することです。各ディレクトリでコマンドを実行する場合にのみ機能します。 Bashスクリプトでは "cd /"を実行できないことに気づきました。問題は、xargsがフルファイルパスを渡さないようです。 xargsコマンドにフルファイルパスを渡すには?

ベストアンサー1

この場合、ファイルに対して発生する可能性のある唯一のエラーは、xargs実行可能ファイルが見つからないことです。renameファイルに関するその他のすべての内容は、xargs実行中のプログラムから入手する必要があります。

このコマンドはシェルスクリプトで使用できますcd。ただし、この場合、スクリプトはどのディレクトリを使用する必要があるのか​​わかりません。

試してみたいかもしれません

( cd "/media/171/" && ls -1rt | xargs rename  's/^[^\.]*(\..*)?$/our $i; sprintf("%01d$1", $i++)/e' )

おすすめ記事