Linuxのコマンドライン。一部のファイルとディレクトリを除くすべてのファイルをディレクトリに移動します。

Linuxのコマンドライン。一部のファイルとディレクトリを除くすべてのファイルをディレクトリに移動します。

ファイルとディレクトリを含むフォルダがありますが、これらすべてのファイルとディレクトリを、およびを除く他のAフォルダに移動したいと思います。Bfilefile2directorydirectory2

これはどのように達成できますか?

答え1

そしてzsh

setopt extendedglob # best in ~/.zshrc
mv A/^(file|directory)(|2)(D) B/

(D)含む指す(隠し)ファイル)。

そしてbash

shopt -s extglob dotglob failglob
mv A/!(@(file|directory)?(2)) B/

そしてksh93

(FIGNORE='@(.|..|@(file|directory)?(2))'; mv A/* B)

答え2

私がいつもすること

cd A
ls > a

(「a」ファイルがないと仮定)。

vi a

アーカイブしたいファイルまたはディレクトリを削除します。

mv $(<a) B

答え3

find除外された式で使用できます。

find . ! -name . -prune ! -path ./file \
                        ! -path ./file2 \
                        ! -path ./directory \
                        ! -path ./directory2 \
     -exec mv {} your_destination \;

このソリューションは、以下からインスピレーションを得ました。この問題

答え4

./Aとが./B同じファイルシステムにある場合そしてそのファイルが次の場所にまだない場合./B

file file2 directory directory2

...これはアトミックでなければなりません。

cd ./A; mv * ../B
for mv in file file2 directory directory2
do mv ../B/"$mv" .
done

そうでない場合は、以下があります。少なくとも上記のコマンドセットを使用して、8つの追加のデバイス間のコピーを完了します。

関連情報