Linuxディレクトリで新しいファイルを選択または検索する方法

Linuxディレクトリで新しいファイルを選択または検索する方法

scpを使用してサーバー上の1つのディレクトリをバックアップしたいと思います。しかし、私の問題は、バックアップディレクトリにファイル(古いファイルと新しいファイル)が多すぎるということです。 。

ファイル1 - 最終修正日:2022-10-11

ファイル2 - 最終修正日:2022-10-12

ファイル3 - 最終修正日:2022-10-13

ファイル4 - 最終修正日:2022-10-14

それでは、findコマンドを使用してファイル4を選択する方法は?新しいファイルを選択した場合そして、scpコマンドを使用して新しいファイルのみをコピーできると思ったからです。非常にありがとう

ベストアンサー1

zsh シェルの使用:

scp ./file*(.om[1]) host:target/dir/

scp現在の作業ディレクトリ.の名前はfile

GNUユーティリティとBourneに似たシェルを使用すると、次のことができます。

{
  {
    LC_ALL=C find . -maxdepth 1 -name 'file*' -type f -printf '%T@\t%p\0'  |
      LC_ALL=C sort -z -k1,1rn |
      head -zn1 |
      cut -zf2-
  } 4<&- |
    xargs -0a /dev/fd/3 -I FILE scp FILE host:target/dir/ 3<&0 <&4 4<&- 
} 4<&0

(検証されていません)。

BSD / GNUを使用して現地時間2022-10-14T00:00:00以降に最後に変更されたファイルを選択するには、次の手順を実行しますfind

LC_ALL=C find . -maxdepth 1 -name 'file*' -type f -newermt 2022-10-14 \
  -exec sh -c 'exec scp "$@" host:target/dir/' sh {} +

または以下を使用してzsh

autoload after
scp ./file*(.e['after 2022-10-14']) host:target/dir/

findsとは対照的に、-newermt2022-10-14T00:00:00.000000000で修正されたファイルも転送されます。)

サブディレクトリのファイルも考慮するには、から削除またはに-maxdepth 1置き換え./fileます。隠しディレクトリのファイルも考慮されます。この動作が必要な場合は、glob修飾子を追加してください。非表示のディレクトリ除外は、呼び出し名が次に始まるディレクトリ(ここでは起動ディレクトリ)以外のディレクトリです。./**/filezshfindDzshfind-prune..LC_ALL=C find . -name '.?*' -prune -o ...

おすすめ記事