特定のディレクトリのファイルのみを別のフォルダにコピーする方法

特定のディレクトリのファイルのみを別のフォルダにコピーする方法

.cp /media/d/folder1/* /home/userA/folder2/ファイルをコピーしていますが、問題はcp: omitting directory....folder1このメッセージなしでそのフォルダをコピーする他の方法はありますか?もう一つ、(コピーの代わりに)移動したい場合は、同じ質問をするのにどうすればいいですか?ありがとう

答え1

find /media/d/folder1/ -maxdepth 1 -type f | xargs cp -t /home/userA/folder2

パイプ文字の前の部分は、指定された|ディレクトリのサブディレクトリから別のファイルを検索しようとせずに、指定されたディレクトリ内のファイルを検索します。パイプ 次のセクションでは、これらのファイルをインポートして宛先ディレクトリにコピーします。コピーする代わりにファイルを移動したい場合は、コマンドを変更できますcpmv

答え2

スペース、改行、その他の奇妙な文字を含むファイル名を処理するためのより安全なアプローチは、それ自体とその操作をfind使用-execすることです。

   -exec command {} +
          This  variant  of the -exec action runs the specified command on
          the selected files, but the command line is built  by  appending
          each  selected file name at the end; the total number of invoca‐
          tions of the command will  be  much  less  than  the  number  of
          matched  files.   The command line is built in much the same way
          that xargs builds its command lines.  Only one instance of  `{}'
          is  allowed  within the command.  The command is executed in the
          starting directory.

したがって、次のようにすることができます。

find /media/d/folder1/ -maxdepth 1 -type f -exec cp {} -t /home/userA/folder2

これにより、隠しファイルもコピーされます。

答え3

cp -R dir1/* dir2

これにより、エラーなしでdir1すべてのエントリ(ファイルとサブディレクトリ)がからコピーされます。dir2

関連情報