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

順番に番号が付けられたターゲットディレクトリとバッチ移動ファイルを作成するコマンド?

ビデオを個々の画像に分割し、コマンドラインからG'MICを使用して7フレームごとに平均化し、その結果を新しい画像に出力してタイムラプスのフレームを作成することで、タイムラプスビデオを作成しています(このようにして、見栄えのするノイズのないビデオ)。ご想像のとおり、私にはたくさんのフレームがあります。ディレクトリには数千の個別の画像があり、順番に名前が付けられています( image1.tiff、image2.tiffなど )。ファイルの移動に最適なスクリプトを見つけました–一度…

k=1; find source/ -type f | while read file; do
     [[ k++ -le 7 ]] && mv "$file" target/ 
done 

今必要なのは、このスクリプトを作成することです

  1. すべてのファイルが移動されるまで繰り返し、
  2. 順番に番号が付けられたターゲットディレクトリ(1、2、3など)を作成すると、それぞれ7つのイメージを含む数百のディレクトリになります。

明確にするために、ディレクトリ1には画像1〜7を含める必要があり、ディレクトリ2には画像8〜14を含める必要があります。

どんな助けでも大歓迎です、私はこれでかなり立ち往生しています。

承認された回答:

以下の(python)スクリプトは、サブフォルダーを作成し、ファイルをフォルダーに整理します。

さらに:

  • スクリプトはフォルダの数を計算し、適切な並べ替えのためにフォルダ名に先行ゼロを追加します(数千のファイル、つまり数百のフォルダについて言及したため)
  • フォルダあたりのファイル数は、スクリプトの先頭の設定によって異なる場合があります

スクリプトは次のことを前提としています:

  • すべてのファイルには拡張子があり、すべてのファイルの拡張子は同じです。 拡張機能
  • ファイルの名前はimage1.tiffimage2.tiff など(先行ゼロなし)。

スクリプト

#!/usr/bin/env python3
import os
import math
import shutil
#---
directory = "/path/to/files"      # path to your files
n_perfolder = 7                   # number of files per sub folder
#--
# creating file list, extension
f_list = os.listdir(directory); ext = f_list[0].split(".")[-1]
# calculate number of folders
n_folders = math.ceil(len(f_list)/n_perfolder)
# creating folder names, including leading zeros
folders = [str(fn+1) for fn in range(n_folders)]
fl_names = [(len(max(folders, key=len))-len(fl))*"0"+fl for fl in folders]
# creating folders and allocate files 
for i in range(len(fl_names)):
    mkfolder = directory+"/"+fl_names[i]
    if not os.path.exists(mkfolder):
        os.makedirs(mkfolder)
        r = range(i*n_perfolder+1, i*n_perfolder+n_perfolder+1)
        for n in r:
            try:
                file = directory+"/"+"image"+str(n)+"."+ext
                target = mkfolder+"/"+"image"+str(n)+"."+ext
                shutil.copyfile(file, target)
            except FileNotFoundError:
                pass

使用方法

スクリプトを空のファイルにコピーします。ヘッドセクションで、ディレクトリをファイルに設定し、サブディレクトリあたりのファイル数を設定して、organize.pyとして保存します。 。

次のコマンドで実行します:

python3 /path/to/organize.py

移動したい場合 ファイルをコピーする代わりに、次の行を置き換えます:

shutil.copyfile(file, target)

作成者:

shutil.move(file, target)

(インデントに注意してください!)

関連:ノーチラスウィンドウで背景色/パターンを設定するにはどうすればよいですか?
Ubuntu
  1. findコマンドを使用してLinux上のファイルとディレクトリを検索します

  2. コマンドラインと Xargs でファイルの名前を一括変更する

  3. mv コマンドですべてのファイルとフォルダーを移動する方法

  1. Ubuntu20.04でユーザーを作成および削除します

  2. Linux でファイルとディレクトリを親フォルダーに移動するにはどうすればよいですか?

  3. 番号付きファイルの範囲を移動する

  1. Linuxでファイルとディレクトリをコピーする方法

  2. Linuxを使用してディレクトリとファイルを削除する方法

  3. Linuxでのコマンドの検索(ファイルとディレクトリの検索)