我有一些目錄具有以下結構:grep的用於兩個模式獨立地(在不同的行)
DAY1/ # Files under this directory should have DAY1 in the name.
|-- Date
| |-- dir1 # Something wrong here, there are files with DAY2 and files with DAY1.
| |-- dir2
| |-- dir3
| |-- dir4
DAY2/ # Files under this directory should all have DAY2 in the name.
|-- Date
| |-- dir1
| |-- dir2 # Something wrong here, there are files with DAY2, and files with DAY1.
| |-- dir3
| |-- dir4
在每dir
有文件數十萬用含有DAY
名稱,例如0.0000.DAY1.01927492
。名稱上只有DAY1
的文件應該只出現在父目錄DAY1
下。
複製文件時發生錯誤,所以我現在在dir
的某些目錄中有DAY1
和DAY2
的混合文件。
我寫了一個腳本來查找包含混合文件的文件夾,因此我可以更仔細地查看它們。我的腳本如下:
for directory in */; do
if ls $directory | grep -q DAY2 ; then
if ls $directory | grep -q DAY1; then
echo "mixed files in $directory";
fi ;
fi;
done
這裏的問題是,我經歷的所有文件兩次,這是沒有意義的考慮,我想只有通過文件看一次。
什麼是更有效的方式來實現我想要的?
如果你只是用'find'獲取文件並刪除他們,如果他們不這樣做屬於他們應該在哪裏? '找到DAY2/-name「* dir2」-delete「 – fedorqui
我無法刪除它們。之後我必須把它們放在正確的位置。事情是我想明白爲什麼,什麼時候發生,以及混合了多少個文件。 – dangom
然後你可以用'man find'來嘗試打印你喜歡的任何東西。您可以選擇文件名等 – fedorqui