GNU/Linux >> Linux の 問題 >  >> Linux

Linux:ファイルの名前を変更しますが、拡張子は保持しますか?

おまけの質問への回答はこちらです。

<ブロック引用>

実際には、20091231 2359 NewYear.jpg のように、写真の作成日をファイル名に入れたいと考えています。残念ながら、それを実現するには、重要なコマンドの組み合わせが必要ではないでしょうか?

EXIF データから写真の作成日を取得したいと仮定すると、そのための別のツールが必要になります。幸いなことに、jhead であることが判明しました。 -n を使用して、必要なことを正確に実行する簡単な方法を提供します オプション。

$ jhead -h
 [...]

 -n[format-string]

             Rename files according to date.  Uses exif date if present, file
             date otherwise.  If the optional format-string is not supplied,
             the format is mmdd-hhmmss.  If a format-string is given, it is
             is passed to the 'strftime' function for formatting
             In addition to strftime format codes:
             '%f' as part of the string will include the original file name
             [...]

以下に例を示します:

$ jhead -n%Y-%m-%d-%f New_year.jpg   
New_year.jpg --> 2009-12-31-New_year.jpg

編集 :もちろん、たくさんの写真に対してこれを行うには、次のようになります:

$ for i in *jpg; do jhead -n%Y-%m-%d-%f $i; done

日付のフォーマットを好みに合わせて微調整するには、 date --help の出力を見てください 、 例えば;利用可能な形式コードが一覧表示されます。

(jhead はさまざまなシステムで広く利用できます。たとえば Ubuntu や Debian を使用している場合は、単純に sudo apt-get install jhead と入力します。 インストールします。)


名前の変更部分だけでも、'rename' プログラムが機能します。これは、man ページで見た例と同じですが、入れ替えただけです。

[email protected]:/tmp/q$ touch myfile.{a,b,c,d}
[email protected]:/tmp/q$ ls
myfile.a  myfile.b  myfile.c  myfile.d
[email protected]:/tmp/q$ rename -v s/myfile/yourfile/ myfile.*
myfile.a renamed as yourfile.a
myfile.b renamed as yourfile.b
myfile.c renamed as yourfile.c
myfile.d renamed as yourfile.d
[email protected]:/tmp/q$ ls
yourfile.a  yourfile.b  yourfile.c  yourfile.d
[email protected]:/tmp/q$ 

betelgeuse:tmp james$ ls myfile.* yourfile.*
ls: yourfile.*: No such file or directory   
myfile.a    myfile.b
betelgeuse:tmp james$ for file
> in myfile.*
> do
> mv "${file}" "`echo $file | sed 's/myfile\./yourfile./'`"
> done
betelgeuse:tmp james$ ls myfile.* yourfile.*
ls: myfile.*: No such file or directory
yourfile.a  yourfile.b

重要なのは、ファイル名の一部を正規表現で変更する方法を示す例を見た場合、それが必要な唯一の例であるということです。拡張機能は、UNIX ファイルシステムでは特別なステータスを持っていません。それらは、たまたま . の後にあるファイル名の一部です。


Linux
  1. Linuxターミナルでファイルの名前を変更します

  2. Linuxでファイルの名前を変更するにはどうすればよいですか?

  3. mv のような Linux コマンドはありますが、正規表現はありますか?

  1. 6 Linux のファイルとディレクトリを移動または名前変更する mv コマンドの例

  2. Linux - ファイル名のスペースの置き換え

  3. Linux:複数のファイルのファイル拡張子を削除する

  1. C で Linux 上のファイルを移動する

  2. Linuxでファイルの名前を再帰的に変更する(拡張子を変更する)

  3. logrotate:N 個の最新のファイルを保持しますが、名前は変更しません