1000 を超えるフォルダーを含むディレクトリがあります。このディレクトリの各フォルダには 1 つのテキスト ファイルが含まれています。テキスト ファイルをこれらのフォルダから別のディレクトリに移動したいと考えています。ただし、新しいディレクトリ内のテキスト ファイルの名前は、抽出元のフォルダーの名前にする必要があります。
awkまたはbashでこれを行うにはどうすればよいですか?
for
ループを使用できます:
for i in <folderlist>; do
mv $i/*.txt <newfolder>/`basename $i`.txt
done
すべてのフォルダーがルートにある場合は、for i in *
またはを使用しますfor i in $(find <root> -type d -maxdepth 1)
。
これはうまくいくはずです。
find ./*/ -name "*.txt" | nawk -v new_dir="new_dir" -F/ 'NF==3{cmd="mv ""\""$0"\" " new_dir"/"$2;system(cmd);}'
for i in $(find . -maxdepth 2 -mindepth 2 -type f ); do
mv $i $YOUR_DIR/$(dirname $i);
done