Linux で同じ拡張子だが年が異なる複数のファイルを移動するには、move コマンドを使用します。

Linux で同じ拡張子だが年が異なる複数のファイルを移動するには、move コマンドを使用します。

2013 年から 2015 年までの .txt ファイルが約 500 個フォルダーに保存されており、2013 年と 2014 年のすべてのファイルを別のフォルダーに移動する必要があります。

答え1

「2013 年および 2014 年の」が「変更時刻が 2013 年または 2014 年である」という意味であると仮定すると、次のようにしてファイルのリストを取得できます。

stat -c '%y %n' * | grep -v '^2015' | cut -d " " -f 4-

これが何をするか:

統計 -c '%y %n'

最終更新時間とファイル名を印刷する

*

フォルダ内のすべてのファイル

grep -v '^2015'

2015年のものは除く

カット -d " " -f 4-

最後にタイムスタンプを削除し、ファイル名だけを残します(改行が埋め込まれた奇妙なファイル名がないことを想定しています)

xargsその後、 などのツールや、(文字が許せば) for ループを使用してファイルを処理して、目的のフォルダーに移動することができます。

答え2

これらのファイルの名前に年が含まれていれば、非常に簡単です。ターミナルに慣れている場合は、次の例をご覧ください。

2013 のすべてのファイルを「2013files」というフォルダに移動するとします。ファイル名は「2013 stuff.txt」または「january 2013.txt」のようになります。

フォルダに移動

cd /path/to/your/folder/

ファイルを移動するフォルダを作成します

mkdir 2013files

次に、名前に「2013」が含まれるすべてのファイルを移動します

rename  ./*2013*.txt  ./2013files

重要: 「rename」コマンドを使用する前に、代わりに「cp」を使用して、入力ミスがないことを確認してください。入力ミスがあると、ファイルが 1 つだけになってしまう可能性があります。

重要(2):まずは必ずファイルをバックアップしてください

関連情報