Last active
November 30, 2016 22:05
-
-
Save averagehat/24afdcf1544632963e0281d105aaf949 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/media/VD_Research/NGSData/RawData/Roche454/2009_05_19 | |
/media/VD_Research/NGSData/RawData/Roche454/2010_03_19 | |
/media/VD_Research/NGSData/RawData/Roche454/2010_05_11 | |
/media/VD_Research/NGSData/RawData/Roche454/2010_06_09 | |
/media/VD_Research/NGSData/RawData/Roche454/2010_09_23 | |
/media/VD_Research/NGSData/RawData/Roche454/2011_06_15 | |
/media/VD_Research/NGSData/RawData/Roche454/2011_08_11 | |
/media/VD_Research/NGSData/RawData/Roche454/2011_08_31 | |
/media/VD_Research/NGSData/RawData/Roche454/2011_10_19 | |
/media/VD_Research/NGSData/RawData/Roche454/2011_12_23 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_01_25 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_02_15 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_03_09 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_03_15 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_04_04 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_05_07 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_05_11 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_06_22 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_07_19 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_08_06 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_08_07 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_08_31 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_02_01 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_03_12 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_05_01 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_05_03 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_05_10 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_05_22 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_06_15 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_07_03 | |
/media/VD_Research/NGSData/RawData/Roche454/R_2011_10_19_13_13_50_FLX12070283_Administrator_101911_pathogenDiscovery | |
/media/VD_Research/NGSData/RawData/Roche454/R_2011_12_23_11_20_18_FLX12070283_Administrator_12232011_AFRIMS_Den2AndPathogenDiscovery | |
/media/VD_Research/NGSData/RawData/Roche454/R_2012_03_15_10_09_58_FLX12070283_Administrator_03152012_Pathogen_Adv_Phage | |
/media/VD_Research/NGSData/RawData/Roche454/R_2012_05_07_10_47_49_FLX12070283_Administrator_05072012_phagebac_pathogen | |
/media/VD_Research/NGSData/RawData/Roche454/R_2012_06_22_07_51_49_FLX12070283_Administrator_062212_FluBAndAH3 | |
/media/VD_Research/NGSData/RawData/Roche454/R_2013_02_01_16_31_49_FLX12070283_Administrator_20130201_16s_phage | |
/media/VD_Research/NGSData/RawData/Roche454/R_2013_05_01_13_27_15_FLX12070283_Administrator_20130501_pH1N1DenAndDen4 | |
/media/VD_Research/NGSData/RawData/Roche454/R_2013_05_03_16_14_38_FLX12070283_Administrator_30130503_16s_EoE_Buny_Phage_Leish | |
/media/VD_Research/NGSData/RawData/Roche454/R_2013_05_22_13_52_58_FLX12070283_Administrator_05222013_Den2AndDen3 | |
/media/VD_Research/NGSData/RawData/Roche454/2009_05_19 | |
/media/VD_Research/NGSData/RawData/Roche454/2010_03_19 | |
/media/VD_Research/NGSData/RawData/Roche454/2010_05_11 | |
/media/VD_Research/NGSData/RawData/Roche454/2010_06_09 | |
/media/VD_Research/NGSData/RawData/Roche454/2010_09_23 | |
/media/VD_Research/NGSData/RawData/Roche454/2011_06_15 | |
/media/VD_Research/NGSData/RawData/Roche454/2011_08_11 | |
/media/VD_Research/NGSData/RawData/Roche454/2011_08_31 | |
/media/VD_Research/NGSData/RawData/Roche454/2011_10_19 | |
/media/VD_Research/NGSData/RawData/Roche454/2011_12_23 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_01_25 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_02_15 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_03_09 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_03_15 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_04_04 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_05_07 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_05_11 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_06_22 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_07_19 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_08_06 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_08_07 | |
/media/VD_Research/NGSData/RawData/Roche454/2012_08_31 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_02_01 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_03_12 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_05_01 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_05_03 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_05_10 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_05_22 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_06_15 | |
/media/VD_Research/NGSData/RawData/Roche454/2013_07_03 | |
/media/VD_Research/NGSData/RawData/Roche454/R_2011_10_19_13_13_50_FLX12070283_Administrator_101911_pathogenDiscovery | |
/media/VD_Research/NGSData/RawData/Roche454/R_2011_12_23_11_20_18_FLX12070283_Administrator_12232011_AFRIMS_Den2AndPathogenDiscovery | |
/media/VD_Research/NGSData/RawData/Roche454/R_2012_03_15_10_09_58_FLX12070283_Administrator_03152012_Pathogen_Adv_Phage | |
/media/VD_Research/NGSData/RawData/Roche454/R_2012_05_07_10_47_49_FLX12070283_Administrator_05072012_phagebac_pathogen | |
/media/VD_Research/NGSData/RawData/Roche454/R_2012_06_22_07_51_49_FLX12070283_Administrator_062212_FluBAndAH3 | |
/media/VD_Research/NGSData/RawData/Roche454/R_2013_02_01_16_31_49_FLX12070283_Administrator_20130201_16s_phage | |
/media/VD_Research/NGSData/RawData/Roche454/R_2013_05_01_13_27_15_FLX12070283_Administrator_20130501_pH1N1DenAndDen4 | |
/media/VD_Research/NGSData/RawData/Roche454/R_2013_05_03_16_14_38_FLX12070283_Administrator_30130503_16s_EoE_Buny_Phage_Leish | |
/media/VD_Research/NGSData/RawData/Roche454/R_2013_05_22_13_52_58_FLX12070283_Administrator_05222013_Den2AndDen3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import qualified Data.List.Utils as L | |
import System.Posix.Files as F | |
import System.Directory as D | |
import qualified System.IO | |
import Data.Foldable (for_) | |
import Control.Applicative (liftA2) | |
import Control.Monad (when) | |
import System.FilePath.Posix ((</>)) | |
-- export LD_LIBRARY_PATH=/media/VD_Research/Admin/PBS/Software/miniconda/lib/:$LD_LIBRARY_PATH | |
-- stack install MissingH | |
-- stack runghc fixlinks.hs | |
-- OR | |
-- stack exec ghc fixlinks.hs | |
-- ./fixlinks (files.txt must be in same directory) | |
-- should check to make sure that this fixRoot actually did something, otherwise there is a broken link with something else causing it. | |
-- should also confirm that resulting path actually exists. | |
-- alternatively could make relative symlinks by Cd'ing first: http://superuser.com/questions/146231/how-do-i-create-a-relative-symbolic-link-in-linux | |
fixLink :: FilePath -> IO () | |
fixLink f = tryReplaceLink f =<< fixRoot <$> F.readSymbolicLink f | |
where | |
fixRoot = L.replace "/home/EIDRUdata/" "/media/VD_Research/" | |
tryReplaceLink src dest = do | |
destExist <- fileExist dest | |
if destExist then replaceLink src dest else putStrLn $ "Cannot rescue file " ++ src ++ " with link to " ++ dest | |
replaceLink src dest = do | |
F.removeLink src | |
F.createSymbolicLink dest src | |
main = do | |
directories <- lines <$> System.IO.readFile "files.txt" | |
for_ directories $ \dir -> do | |
relFiles <- listDirectory dir | |
for_ relFiles $ \relF -> do | |
let absF = dir </> relF | |
isBroken <- brokenLink absF | |
when (isBroken && (relF /= "meta")) (fixLink absF) | |
where | |
brokenLink :: FilePath -> IO Bool | |
brokenLink p = not <$> fileExist p | |
listDirectory dir = filter (not . (`elem` [".", ".."])) <$> D.getDirectoryContents dir |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment